home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / custom-bib / babel.mbs (.txt) next >
LaTeX Document  |  1995-03-09  |  130KB  |  3,878 lines

  1. %\iffalse
  2. %/////////////////////////////////////////
  3. %   Generic bibliography style           /
  4. %   for both author-year and numerical   /
  5. %   for natbib, harvard, astron styles   /
  6. %   authordate, and apalike              /
  7. %   INTERNATIONAL VERSION for            /
  8. %     multiple languages                 /
  9. %/////////////////////////////////////////
  10. % This file is self-documenting: simply LaTeX it!
  11. %% (Here are the specifications of the source file)
  12. %<*selfdoc>
  13. \ifx\undefined\endoptions\def\next{%
  14.    \NeedsTeXFormat{LaTeX2e}%
  15.    \documentclass[a4paper,11pt,twoside]{article}%
  16.    \usepackage{doc}%
  17.    \raggedbottom
  18.    \def\skipguard##1>{}\MakePercentIgnore\skipguard}\else\let\next\relax\fi
  19. \next
  20. %</selfdoc>
  21. %% \ProvidesFile{babel.mbs}[1995/02/02 2.4 (PWD)]
  22. %\iffalse
  23. %   For use with docstrip to select various style parameters
  24. %   Default is an author-year bib style designed for my natbib.sty,
  25. %     which can also handle numerical citations.
  26. %%   For use with BibTeX version 0.99a or later, LaTeX version 2.09
  27. %%-------------------------------------------------------------------
  28. %% NOTICE:
  29. %% This file may be used for non-profit purposes.
  30. %% It may not be distributed in exchange for money, 
  31. %%   other than distribution costs.
  32. %%   
  33. %% The author provides it `as is' and does not guarantee it in any way.
  34. %% Copyright (C) 1994 Patrick W. Daly
  35. %% Max-Planck-Institut f\"ur Aeronomie
  36. %% Postfach 20
  37. %% D-37189 Katlenburg-Lindau
  38. %% Germany
  39. %% E-mail:
  40. %% SPAN--     nsp::linmpi::daly    (note nsp also known as ecd1)
  41. %% Internet-- daly@linmpi.dnet.gwdg.de   
  42. %%-----------------------------------------------------------
  43. %% \CharacterTable
  44. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  45. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  46. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  47. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  48. %%   Dollar        \$     Percent       \%     Ampersand     \&
  49. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  50. %%   Asterisk      \*     Plus          \+     Comma         \,
  51. %%   Minus         \-     Point         \.     Solidus       \/
  52. %%   Colon         \:     Semicolon     \;     Less than     \<
  53. %%   Equals        \=     Greater than  \>     Question mark \?
  54. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  55. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  56. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  57. %%   Right brace   \}     Tilde         \~}
  58. % \CodelineNumbered
  59. % \RecordChanges
  60. % ^^A Comment out next line with %^^A  to print coding
  61. % \OnlyDescription
  62. % \setcounter{StandardModuleDepth}{1}
  63. % \begin{document}
  64. % \setcounter{IndexColumns}{2}
  65. % \setlength{\IndexMin}{10cm}
  66. % \changes{1.0}{1993 Aug 16}{Initial version}
  67. % \changes{2.0}{1994 Jan 31}{Add multilingual capabilities}
  68. % \changes{2.1}{1994 Jul 1}{Change documentation to \LaTeXe}
  69. % \changes{2.1a}{1994 Sep 1}{Alter wording of article title capitalization
  70. %          choice}
  71. % \changes{2.2}{1994 Sep 5}{Add full author name possibilities}
  72. % \changes{2.2}{1994 Sep 5}{Fix up some punctuations}
  73. % \changes{2.2a}{1994 Sep 7}{Add possibility to put titles in quotes}
  74. % \changes{2.3}{1994 Sep 15}{Accommodate new \texttt{harvard.sty}}
  75. % \changes{2.3}{1994 Sep 15}{Add full names for \texttt{natbib} v5.3}
  76. % \changes{2.3a}{1994 Oct 11}{Add option so year can contain any text}
  77. % \changes{2.3b}{1995 Jan 18}{Allow edited by to be in parentheses}
  78. % \changes{2.3b}{1995 Jan 18}{Allow (year) to have no punctuation following}
  79. % \changes{2.3c}{1995 Jan 20}{Journal volume numbers with more choice}
  80. % \changes{2.4}{1995 Feb 2}{Date with no punctuation preceding it}
  81. % \changes{2.4}{1995 Feb 2}{Editor names can be reversed like authors'}
  82. % \changes{2.4}{1995 Feb 2}{Can abbreviate `edited by' to `ed(s).'}
  83. % \changes{2.4}{1995 Feb 2}{Released version}
  84. % ^^A Change margins to center text
  85. % \setlength{\oddsidemargin}{0.5\paperwidth}
  86. % \addtolength{\oddsidemargin}{-0.5\textwidth}
  87. % \addtolength{\oddsidemargin}{-1in}
  88. % \setlength{\evensidemargin}{\oddsidemargin}
  89. % \pagestyle{myheadings}
  90. % \markboth{P. W. Daly}{Generic Multilingual Bibliography Style}
  91. % \title{\bfseries A Generic Bibliographic Style File\\
  92. %             with Multilingual Applications}
  93. %    
  94. % \author{Patrick W. Daly}
  95. %         
  96. % \GetFileInfo{babel.mbs}
  97. % \date{This paper describes file \texttt{\filename},\\
  98. %  version \fileversion{} from \filedate}
  99. % \maketitle
  100. % \MakeShortVerb{\|}
  101. % \parskip=1ex \parindent=0pt
  102. % \newcommand{\btx}{{\sc Bib}\TeX}
  103. % \newcommand{\dtx}{\textsf{docstrip}}
  104. % \section{Introduction}
  105. % This generic, or master, \btx{} style file is intended to be used with
  106. % \dtx{} in order to produce actual \texttt{.bst} files. By selecting
  107. % desired options, the output is customized to the particular requirements
  108. % needed.
  109. % The file has been assembled from Oren Patashnik's standard files {\tt
  110. % plain.bst} and \texttt{unsrt.bst}, plus his non-standard file {\tt
  111. % apalike.bst}. This last is an author-year citation style, although
  112. % somewhat imperfect. I have added a number of other options and codings to
  113. % produce the features that I deem necessary.
  114. % The file now contains the possibility of changing languages. All explicit
  115. % words have been replaced by functions whose definitions may be altered in
  116. % the resulting \texttt{.bst} file (less desirable method) or for which optional
  117. % definitions may be added in the master file as a new language option
  118. % (preferred method). Alternatively, one can select the `language' named
  119. % \texttt{babel} and then \LaTeX{} commands are inserted for the explicit
  120. % words, the definitions of which must be contained in a file called {\tt
  121. % babelbst.tex}.
  122. % To produce a customized bibliographic style (\texttt{.bst}) file from this
  123. % master file, simply \TeX{} or \LaTeX{} the `program' \texttt{makebst.tex}.
  124. % When asked for the name of the master file, answer with
  125. % \begin{quote}\tt\filename\end{quote}
  126. % and then reply to the questions in the following menus. The last question
  127. % is whether you want to generate the \texttt{.bst} file right away. 
  128. % More details on this process and on the options available are to be found
  129. % in the rest of this article.
  130. % \section{About Master Bibliographic Style Files}
  131. % \subsection{The \dtx{} Options}
  132. % This master file is a \btx{} bibliographic style file containing
  133. % alternative coding depending on \dtx{} options. The options are
  134. % selected when \dtx{} is run, either interactively or through a
  135. % batch job. 
  136. % Suppose that one of the options is called \texttt{xyz}. Then the following
  137. % alternatives are possible:
  138. % \begin{quote}
  139. % |%<xyz> | \em one line of coding
  140. % \end{quote}
  141. % \emph{includes} the single line of coding;
  142. % \begin{quote}
  143. % |%<!xyz> | \em one line of coding 
  144. % \end{quote}
  145. % \emph{excludes} the single line;
  146. % \begin{quote}
  147. % |%<*xyz> | \\
  148. % \emph{several lines of coding}\\
  149. % |%</xyz> | 
  150. % \end{quote}
  151. % \emph{includes} all the bracketted lines;
  152. % \begin{quote}
  153. % |%<*!xyz> | \\
  154. % \emph{several lines of coding}\\
  155. % |%</!xyz> | 
  156. % \end{quote}
  157. % \emph{excludes} all the bracketted lines.
  158. % Options may be logically combined: the symbol \verb!|! is a logical {\sf
  159. % or}, |&| a logical {\sf and}, |!| a logical {\sf not}; parentheses {\tt(}
  160. % and {\tt)} may be used to group options.
  161. % \subsection{The \dtx{} Batch Job}
  162. % In order to generate a true \btx{} style file with selected options from
  163. % this master file, it is necessary to run a \dtx{} batch job.
  164. % Suppose that the master file is named \texttt{master.mbs}, and the
  165. % resulting \btx{} style file is to be \texttt{silly.bst}, and the batch job
  166. % file itself is called \texttt{silly.dbj}. To produce this with options, say,
  167. % \texttt{xyz} and \texttt{abc}, the batch job would look something like:
  168. % \begin{quote}\begin{verbatim}
  169. % \def\batchfile{silly.dbj}
  170. % \input docstrip
  171. % \preamble
  172. % This is for Journal of Silly Results
  173. % \endpreamble
  174. % \postamble
  175. % End of customized bst file
  176. % \endpostamble
  177. % \keepsilent
  178. % \generateFile{silly.bst}{f}{\from{master.mbs}{xyz,abc}}
  179. % \end{verbatim}
  180. % \end{quote}
  181. % A preamble is not necessary, although it is advisable to include some
  182. % statement about the application of the bibliographic style. A postamble
  183. % \emph{is} vital, otherwise the default will add |\endinput| at the end
  184. % of the file, something that \btx{} will not understand. The |\keepsilent|
  185. % is optional and just suppresses \dtx{} output during processing.
  186. % \subsection{The \texttt{makebst} Program}
  187. % The program \texttt{makebst} simplifies the creation of the batch job file. To
  188. % do that, it needs information on the available options. This information
  189. % must be stored in a special format, either in the master file itself, or
  190. % in a file with the same root name but extension \texttt{.opt}. The form of
  191. % this format is described in the documentation on \texttt{makebst}.
  192. % In the master file, this information must be enclosed within \dtx{}
  193. % options |%<*options>| \dots |%</options>| and \emph{must} include an
  194. % |\endoptions| command. It may also include any number of comments. 
  195. % A sample menu in the master file to select one or none of options 
  196. % \texttt{xyz} \emph{or} \texttt{zyx} would look thus:
  197. % \begin{quote}\begin{verbatim}
  198. % %<*options>
  199. % \mes{Select one of these}
  200. % \optdef{f}{xyz}{Option forword}{to do forward stuff}
  201. % \optdef{r}{zyx}{Option reverse}{to do reverse stuff}
  202. % \optdef{*}{}{None of the above}{}
  203. % \getans
  204. % \endoptions
  205. % %</options>
  206. % %<*!options>
  207. % . . . . . . 
  208. % %</!options>
  209. % \end{verbatim}
  210. % \end{quote}
  211. % An explanation of these commands is to be found in the documentation on 
  212. % \texttt{makebst}.
  213. % The menu information may be extracted from the master file by means of
  214. % \dtx{} and stored in a file with extension \texttt{.opt}. If this
  215. % file is missing, the program tries to read it from the master file.
  216. % (I do not actually recommend doing this; the information should come
  217. % from the true file and not from one that may have been edited)
  218. % \section{Multilingual Adaptation}
  219. % In the original \texttt{.bst} files from Oren Patashnik, there are explicit
  220. % English words that are output into the final text. Since \LaTeX{} is
  221. % increasingly being used for other languages, and since the official
  222. % version since December 1991 also uses macros in place of explicit words,
  223. % it seems appropriate for \btx{} to follow suit.
  224. % In this master bibliographic style file {\tt\filename}, all explicit
  225. % words have been replaced by functions: e.g., the word `editor' has become
  226. % the function \texttt{bbl.editor}. Depending on the language option chosen,
  227. % this function is defined to be the text {\tt"editor"}, {\tt"Redakteur"},
  228. % or {\tt"redacteur"}, for English, German, and French, respectively. 
  229. % There is another special `language' called \texttt{babel} that instead inserts
  230. % the text |"\bbleditor{}"|; the definitions of these \LaTeX{} commands
  231. % must be in a separate file named \texttt{babelbst.tex} that is read in at
  232. % the start of the bibliography.
  233. % There are thus two ways of generating a \texttt{.bst} file for a given
  234. % language:
  235. % \begin{enumerate}
  236. % \item \label{one} 
  237. %   Select one of the allowed \dtx{} language options (see
  238. %   page~\pageref{babelopt}) or \texttt{makebst} language menu choices
  239. %   (page~\pageref{babelmenu}) for a \texttt{.bst} file that is valid for that
  240. %   language only.
  241. % \item \label{two}
  242. %   Select the language \texttt{babel} and then edit the file 
  243. %   \texttt{babelbst.tex} to contain the desired translations, whereby 
  244. %   a number of languages might be included in it with switching
  245. %   according to some criterion.
  246. % \end{enumerate}
  247. % I am uncertain as to which is the better method. With \ref{one}, the
  248. % \texttt{.bst} file is complete on its own, but a different file must be
  249. % generated for every language. This is probably necessary anyway since the
  250. % bibliography style might be language dependent. Articles in English would
  251. % have a different argument to the |\bibliographystyle| command from those
  252. % in other languages. So what? Languages cannot really be switched so
  253. % easily as an option in |\documentstyle|. The disadvantage is that the
  254. % addition of further languages is somewhat complicated and the master file
  255. % could grow to a very large size, slowing down the \dtx{} processing.
  256. % Method \ref{two} produces a single \texttt{.bst} file for all languages, the
  257. % differences appearing only in the file \texttt{babelbst.tex}. This makes it
  258. % easier to add new languages. However, unless the user is working
  259. % exclusively in one language, he will need some kind of switching method.
  260. % Most language installations provide tests for the current language, and
  261. % these would have to be built into the \texttt{babelbst.tex} file.
  262. % \subsection{Adding New Languages to the Master File}
  263. % To add a new language to this master file, changes must be made at 6
  264. % places, all of which are marked with the text \texttt{NEWLANGUAGE:}. You
  265. % only need to search for these and follow the instructions there, also
  266. % looking at the existing languages as examples.
  267. % Let us suppose the language Newl is to be added with the \dtx{}
  268. % option name \texttt{newlang}.
  269. % \begin{enumerate}
  270. % \item
  271. %   Add an entry in the description of the options. This will appear as
  272. %   \begin{quote}
  273. %     \verb!% \item[newlang]      the equivalent Newl words;!
  274. %   \end{quote}
  275. % \item
  276. %   Add the option to the \texttt{makebst} language menu. This will be like
  277. %   \begin{quote}
  278. %   \verb!\optdef{x}{newlang}{Newl}{}!
  279. %   \end{quote}
  280. %   where \texttt{x} stands for some unique letter within the menu.
  281. % \item
  282. %   Add a headline for the \texttt{.bst} file that states right at the start
  283. %   for which language it is intended.
  284. %   \begin{quote}
  285. %   \verb!%<newlang> %                NEWL!
  286. %   \end{quote}
  287. % \item
  288. %   Now for the hard part. Add all the translations for \texttt{bbl.and} etc.
  289. %   Follow the models shown. The addition should be something like
  290. %   \begin{quote}\small
  291. % \verb!% The Newl translations !\\
  292. % \verb!%    \begin{macrocode}!\\
  293. % \verb!%<*newlang>!\\
  294. % \verb! % The language selected is NEWL!\\
  295. % \verb!FUNCTION {bbl.and}!\\
  296. % \verb!{ "ee"}!\\
  297. % \verb!. . . . . . . . . . . . . .!\\
  298. % \verb!FUNCTION {bbl.fifth}!\\
  299. % \verb=%<!ord>{ "Frotty" }=\\
  300. % \verb!%<ord>{ "5-y" }!\\
  301. % \verb! !\\
  302. % \verb!FUNCTION {bbl.th}!\\
  303. % \verb!{ "-y" }!\\
  304. % \verb! !\\
  305. % \verb!%</newlang>!\\
  306. % \verb!%    \end{macrocode}!
  307. %   \end{quote}
  308. % \item
  309. %   A similar addition is made for the names of the months.
  310. % \item
  311. %   There could be some problems with edition numbers due to language
  312. %   dependent ways of treating ordinal numbers (1st, 2nd, 3rd in English;
  313. %   1$^{\mbox{\scriptsize re}}$, 2$^{\mbox{\scriptsize e}}$, 
  314. %   3$^{\mbox{\scriptsize e}}$ in French; 1., 2., 3., in German). Some
  315. %   accommodation already exists for the oddball language English, and
  316. %   further hacking may be needed for others.
  317. % \item
  318. %   Finally, if there should be any need for a double-quote character in
  319. %   the translations (German needs it for umlauts) then there is trouble
  320. %   because the \btx{} strings do not allow it. Instead, use the command
  321. %   |\qq|, as in the German word |F\qq{u}nfte| for {\sl F\"unfte} (fifth).
  322. %   This command must then be defined for the source text, by adding its
  323. %   definition to the start of the \texttt{.bbl} file. The function 
  324. %   \texttt{begin.bib} already includes this for the \texttt{german} option, 
  325. %   which may be added in the same manner for other languages.
  326. % \end{enumerate}
  327. % \subsection{Changing \texttt{babelbst.tex} for New Languagues}
  328. % If the above is too complex, then a new language can be added by
  329. % modifying the file \texttt{babelbst.tex} and selecting the language {\tt
  330. % babel} for the \texttt{.bst} file. If this is the only language to be used,
  331. % then just change the English words in the definitions. 
  332. % However, some form of switching would be more desirable. With \TeX\
  333. % version 3, there is a |\language| parameter to control the hyphenation
  334. % patterns, and this could be used to select the correct language. For
  335. % example, if language 0 is English and language 1 Newl, then put the
  336. % English version of \texttt{babelbst.tex} into \texttt{englbst.tex} and the 
  337. % Newl
  338. % version in \texttt{newlbst.tex}. Then \texttt{babelbst.tex} could contain:
  339. % \begin{quote}\begin{verbatim}
  340. % \ifcase\language \input{englbst} \or \input{newlbst} 
  341. %   \else \input{newlbst} \fi
  342. % \end{verbatim}
  343. % \end{quote}
  344. % This is of course installation dependent. 
  345. % \subsection{A Compromise Method of Adding a Language}
  346. % A third method is a mix between the above two and requires some hacking
  347. % on the part of the user. 
  348. % \begin{enumerate}
  349. % \item 
  350. %   Make up a file like \texttt{babelbst.tex} for the new language, say 
  351. %  \texttt{newlbst.tex}. 
  352. % \item 
  353. %   Generate a \texttt{.bst} file with the \texttt{babel} language option.
  354. % \item
  355. %   Go to the line near the end of the \texttt{.bst} file and replace
  356. %   \begin{quote}\verb!\input{babelbst.tex}! with
  357. %                \verb!\input{newlbst.tex}!
  358. %   \end{quote}
  359. % \end{enumerate}
  360. % The resulting \texttt{.bst} file is valid for one language only (as for
  361. % method \ref{one}), and its name should reflect this.
  362. % \subsection{Extracting Sample \texttt{babelbst.tex} Files}
  363. % Language dependent definition files suitable to be used as 
  364. % \texttt{babelbst.tex}, or to be read in by it, 
  365. % are contained in this master file
  366. % for English, German, and French. Extract them with \dtx{} and the
  367. % options \texttt{bblbst,english}, \texttt{bblbst,german}, and 
  368. % \texttt{bblbst,french}.
  369. % \subsection{Problem with Edition Numbers}
  370. % Something to note here is the ordinal numbers for editions. \btx{}
  371. % demands that the field \texttt{edition} be given in the database as a word
  372. % `First', `Second', etc., or as `1st', `2nd', etc. This is bad policy
  373. % because it is language dependent. So what I do is to test for the words
  374. % `first' through `fifth' (case independently) and replace them with
  375. % language-dependent equivalents. If the {\tt<ord>} option is selected,
  376. % these equivalents are ordinal numbers for that language. Any other words
  377. % cannot be interpreted and must be printed as is. 
  378. % However, if the \texttt{edition} is given as a number, with or without
  379. % following letters, then the numbers 1 through 5 are replaced by their
  380. % words; any higher numbers just have the ordinal ending (`th' in English)
  381. % added to them. 
  382. % These numbers are only used with the word
  383. % `edition' or its equivalent in other languages, so the translators need
  384. % to provide only the one gender, e.g., feminine for both German and
  385. % French.
  386. % \section{The Options}
  387. % Here I present a list of all the \dtx{} options that are
  388. % available in this file {\tt\filename}.
  389. % The normal user can skip this section since he will probably make use
  390. % of the menus via \texttt{makebst}. These are described in
  391. % Section~\ref{sec:menu}. The menus provide much more informative prompts
  392. % than the heavily abbreviated option names listed here. In other words,
  393. % the options described in this section are meant for internal (programmer)
  394. % usage, while the normal interface for the user is the menus.
  395. % I have tried to avoid
  396. % conflicts with mutually exclusive options by always letting one dominate.
  397. % For example, if \texttt{a} and \texttt{b} are to be mutually exclusive, then
  398. % the three possibilities are:
  399. % \begin{quote}\begin{tabular}{rl}
  400. % neither &  \tt\%<!a\&!b> \\
  401. % \texttt{a} only & \tt\%<a> \\
  402. % \texttt{b} only & \tt\%<!a\&b>
  403. % \end{tabular}\end{quote}
  404. % so that if both \texttt{a} and \texttt{b} have been selected, the result is as
  405. % if only \texttt{a} had been given. (If one uses \texttt{makebst} to produce the
  406. % \dtx{} batch job, then it is impossible to give mutually
  407. % exclusive options.)
  408. % Most mutually exclusive options have the same prefix before the hyphen.
  409. % \newenvironment{opt}{%
  410. % \begin{list}{}{\labelwidth2cm \leftmargin2.5cm \labelsep1em \rightmargin0pt
  411. %  \def\makelabel##1{\ttfamily##1 \hfill}}}{\end{list}}
  412. % \textbf{Citation style:} whether or not a numerical or author-year system 
  413. % is to be used.
  414. % \begin{opt}
  415. % \item[--] default is numerical, standard \LaTeX, as for {\tt
  416. %           plain.bst}.\\
  417. %           |\bibitem{key}...|
  418. % \item[cite] special for listing entire databases; the cite key is used 
  419. %             as the label so it may be listed.\\
  420. %             |\bibitem[key]{key}...|
  421. % \item[ay] for author-year style of citations. Various forms of |\bibitem|
  422. %           are provided under this option, to support different types
  423. %           of \LaTeX{} styles for interfacing with the author-year system.
  424. % \end{opt}
  425. % If \texttt{ay} has been selected, then the type of author-year interface
  426. % is selectable. Some of these, like \texttt{natbib} and \texttt{harvard}
  427. % exist in two versions because of updates in these systems. 
  428. % \begin{opt}
  429. % \item[--] default is the system I invented for my \texttt{natbib.sty}.\\
  430. %            |\bibitem[author(year)]{key}...|   
  431. % \item[nat] for extended format of \texttt{natbib.sty} version 5.3\\
  432. %            |\bibitem[author(year)full author]{key}...|   
  433. % \item[alk] for the \texttt{apalike.sty} of Oren Patashnik and related
  434. %            systems\\
  435. %            |\bibitem[author, year]{key}...|
  436. % \item[har] for the Harvard family of styles (with \texttt{harvard.sty}).\\
  437. %            |\harvarditem[short]{long}{year}{key}...|
  438. % \item[harnm] for the extended Harvard family, containing some extra commands
  439. %            used by \LaTeXe\ version 2.0.3 of \texttt{harvard.sty} 
  440. % \item[ast] for astronomy family of styles (with \texttt{astron.sty}).\\
  441. %            |\bibitem[\protect\astroncite{author}{year}]{key}...|
  442. % \item[cay] for the Chicago family of styles (with \texttt{chicago.sty}).\\
  443. %            |\bibitem[\protect\citeauthoryear{long}{short}{year}]{key}...|
  444. % \item[cn] for the ``author-date'' group of styles (with {\tt
  445. %            authordate1-4.sty})\\
  446. %            |\bibitem[\protect\citename{author, }year]{key}...|
  447. % \end{opt}
  448. % \textbf{Sequence:} the order in which the references are listed.
  449. % \begin{opt}
  450. % \item[--]      default is alphabetical by all authors, date, title
  451. % \item[seq-no]  (numerical only) sequence by citation order
  452. % \item[seq-lab] (author-year) by label, date, title (means that Daly 
  453. %                precedes Daly and Williams, precedes Daly et al.)
  454. % \end{opt}
  455. % \textbf{Language selection:} the translations of certain explicit words.
  456. % \label{babelopt}
  457. %^^A NEWLANGUAGE: add an \item here, say \item[newlang]
  458. % \begin{opt}
  459. % \item[english]   English, for `and', `chapter', `editor', etc';
  460. % \item[german]    the equivalent German words;
  461. % \item[french]    the equivalent French words;
  462. % \item[espo]      the equivalent Esperanto words;
  463. % \item[babel]     replace words with \LaTeX{} commands that are defined 
  464. %                  in the file \texttt{babelbst.tex};
  465. % \item[{\em??}]   whatever other languages have been added.
  466. % \end{opt}
  467. % \begin{quote}\sl Warning: \textbf{There is no default language!} One of the 
  468. % above options must be given.
  469. % \end{quote}
  470. % \textbf{Names formatting:} how initials and surnames are to be combined.
  471. % \begin{opt}
  472. % \item[--]       default is full names, given names first
  473. % \item[nm-init]  initials plus surname
  474. % \item[nm-rev]   surname plus initials
  475. % \item[nm-rev1]  surname plus initials (1st name only) then initials 
  476. %                 plus surname
  477. % \item[nm-rv]    as \texttt{nm-rev}, but initials without dots
  478. % \item[ed-rev]  editors' names are reversed the same as authors'
  479. % \end{opt}
  480. % \textbf{Number of names:} normally all names listed (in reference list)
  481. % \begin{opt}
  482. % \item[nmlm]     limit number of names
  483. % \item[x1...x9]  (with \texttt{nmlm}) maximum number of names to appear
  484. % \item[m1...m5]  (with \texttt{nmlm}) minimum number before `et al' written;
  485. %                 no check for consistency is taken; one \texttt{x} and 
  486. %                 one \texttt{m} number must be given, and {\tt x}$\le${\tt m}
  487. % \end{opt}
  488. % \textbf{Names font:} in the reference list
  489. % \begin{opt}
  490. % \item[--]       default is names in normal type face
  491. % \item[nmft-sc]  names in small caps
  492. % \item[nmft-it]  names in italics   
  493. % \item[nmft-bf]  names in bold      
  494. % \end{opt}
  495. % \textbf{Block punctuation:} between logical sections (not mutually
  496. % exclusive)
  497. % \begin{opt}
  498. % \item[--]       default is period after each logical section, including end
  499. % \item[blk-com]  use commas, except at very end (changes `In' to `in')
  500. % \item[blk-tit]  use commas, except after a title and very end
  501. % \item[in-blk]   when commas used between blocks, starts sentence after
  502. %                 article title when followed by ``In: \dots''
  503. % \item[in-col]   puts a colon after `In' or `in' for edited works
  504. % \item[fin-bare] no punctuation at the very end
  505. % \end{opt}
  506. % \textbf{Date:} position and enclosure
  507. % \begin{opt}
  508. % \item[--]       default is date at end, before notes; for author-year,
  509. %                   date consists only of year, no month
  510. % \item[dt-beg]   date goes after authors' names 
  511. % \item[dt-end]   date goes after any notes
  512. % \item[yr-par]   no month, year in parentheses ()
  513. % \item[yr-brk]   no month, year in brackets []
  514. % \item[yr-col]   no month, year preceded by colon and space
  515. % \item[yr-per]   year preceded by period and space
  516. % \item[yr-blk]   year preceded by space
  517. % \item[note-yr]  permits text (like ``in press'') in the \texttt{year} field
  518. % \end{opt}
  519. % \textbf{Article in journal:} style of title, volume, pages
  520. % \begin{opt}
  521. % \item[--]       default is: Title. \textit{Journal}, vol(num):p1--p2
  522. % \item[volp-sp]  as above, but with a space, vol(num):~p1--p2
  523. % \item[vol-bf]   volume in bold
  524. % \item[vol-it]   volume in italics
  525. % \item[vol-2bf]  volume and number bold
  526. % \item[volp-com] comma and space instead of colon:   vol(num), p1--p2
  527. % \item[vnum-x]   no number for journals, only volume
  528. % \item[vnum-s]   replace vol(num) with vol, num
  529. % \item[vnum-nr]  replace vol(num) with vol, no. num
  530. % \item[vnum-h]   replace vol(num) with vol, \#num
  531. % \item[jpg-1]    only starting page given
  532. % \item[jnm-x]    no punctuation after journal name
  533. % \item[tit-it]   article title in italics
  534. % \item[tit-q]    article title in single quotes
  535. % \item[tit-qq]   article title in double quotes
  536. % \item[jtit-x]   no article title (applies only to journals and 
  537. %                 collections)
  538. % \item[atit-u]   article title capitalized as in entry, default is
  539. %                 sentence capitalization (first word and words following
  540. %                 colons)
  541. % \end{opt}
  542. % \textbf{Thesis title:} formatted like a book or article
  543. % \begin{opt}
  544. % \item[--]       default is like a book title
  545. % \item[thtit-a]  titles of PhD and Master theses formatted like articles
  546. % \end{opt}
  547. % \textbf{Book title:} font style
  548. % \begin{opt}
  549. % \item[--]       default is italicized
  550. % \item[btit-rm]  book title plain
  551. % \end{opt}
  552. % \textbf{Abbreviations:} of various words, default is no abbreviations
  553. % \begin{opt}
  554. % \item[pp]       abbreviate `page(s)' as `p.' and `pp.'
  555. % \item[ed]       abbreviate `editor(s)' as `ed.' and `eds.'
  556. % \item[abr]      abbreviate `volume', `edition', `technical report', etc.
  557. % \item[ord]      write edition numbers as 1st, 2nd, instead as words.
  558. % \end{opt}
  559. % \textbf{Editor:} alternative for \emph{in edited} work
  560. % \begin{opt}
  561. % \item[--]       in \emph{names}, editors, \emph{title}
  562. % \item[edby]     in \emph{title}, edited by \emph{names}
  563. % \item[edby-par] in \emph{title} (Edited by \emph{names})
  564. % \end{opt}
  565. % \textbf{Citation label:} what is written by the |\cite| command
  566. % \begin{opt}
  567. % \item[--]       default is no special font
  568. % \item[lab-it]   label (names printed by |\cite|) in italics
  569. % \item[xlab-it]  extra label (letter after year) in italics
  570. % \end{opt}
  571. % \textbf{Emphasis:} defines what `italicized' really means
  572. % \begin{opt}
  573. % \item[--]       default is |\em| (can switch between |\it| 
  574. %                 and |\rm|
  575. % \item[em-it]    use |\it| instead (always italic)
  576. % \item[em-x]     no emphasis
  577. % \end{opt}
  578. % \textbf{Special punctuation:} 
  579. % \begin{opt}
  580. % \item[amper]    use \& in place of `and'
  581. % \item[and-xcom] no comma before last `and' of an author list (citations and
  582. %                  references)
  583. % \item[and-com]  add comma before `and' even for two authors (in list of
  584. %                  references)
  585. % \item[xand]    no `and' in an author list (references)
  586. % \item[etal-it]  `et al.' in italics
  587. % \end{opt}
  588. % \textbf{Font commands:}
  589. % \begin{opt}
  590. % \item[--]     use \LaTeX~2.09 font commands
  591. % \item[nfss]   use |\textbf|, |\textit|, |\emph| in place of |\bf|, |\it|,
  592. %                and |\em|; only works then with \LaTeXe
  593. % \end{opt}
  594. % \section{The Menu Information}\label{sec:menu}
  595. % Here I describe the options and menu information for this particular
  596. % master file \texttt{\filename}. To construct a \dtx{} driver file
  597. % to generate a desired \texttt{.bst} file, simply process \texttt{makebst.tex}
  598. % with \TeX\ or \LaTeX, and give 
  599. % \begin{quote}\tt\filename\end{quote}
  600. % when prompted for the name of the master file. Then answer the questions
  601. % in the menus that follow. The menu information is extracted from here.
  602. % All this menu information is nested between \dtx{} guard options
  603. % |%<*options>| \dots\ |%</options>|, and the last command is
  604. % |\endoptions|. The rest of the file is nested between |%<*!options>|
  605. % \dots\ |%</!options>| in order to exclude it if \dtx{} is used to
  606. % extract only the menu information.
  607. % \subsection*{Author-year or numerical}
  608. % The first question is whether a numerical or author-year citation style
  609. % is to be used. If the latter, the supporting system is my {\tt
  610. % natbib.sty}, which expects |\bibitem| to have an optional argument
  611. % containing the short form of the authors, plus year in parentheses.
  612. % E.g.,
  613. % \begin{quote}
  614. % |\bibitem[Daly et al.(1990)]{key}...|
  615. % \end{quote}
  616. % There is now a newer version of \texttt{natbib.sty} (v5.3) that
  617. % supports an optional full author list too, as
  618. % \begin{quote}
  619. % |\bibitem[Daly et al.(1990)Daly, Keppler, and Williams]{key}...|
  620. % \end{quote}
  621. % Other systems are also supported, such as the Harvard family of
  622. % bibliography styles (with \texttt{harvard.sty}), which have entries in the
  623. % form
  624. % \begin{quote}
  625. % |\harvarditem[Daly et al.]{Daly, Keppler,|\\
  626. % |       and Williams}{1990}{key}...|
  627. % \end{quote}
  628. % or the astronomy family (with \texttt{astron.sty}) with entries like
  629. % \begin{quote}
  630. % |\bibitem[\protect\astroncite{Daly et al.}{1990}]{key}...|
  631. % \end{quote}
  632. % or the Chicago family (with \texttt{chicago.sty}) with entries like
  633. % \begin{quote}
  634. % |\bibitem[\protect\citeautheryear{Daly, Keppler, and|\\
  635. % |      Williams}{Daly et al.}{1990}]{key}...|
  636. % \end{quote}
  637. % or the so-called ``author-date'' group (with \texttt{authordate1-4.sty})
  638. % with entries of the form
  639. % \begin{quote}
  640. % |\bibitem[\protect\citename{Daly et al.}1990]{key}...|
  641. % \end{quote}
  642. % Finally, there is the \texttt{apalike} format of Oren Patashnik, for use
  643. % with \texttt{apalike.sty} that has entries of the form
  644. % \begin{quote}
  645. % |\bibitem[Daly et al., 1990]{key}...|
  646. % \end{quote}
  647. % In addition to numerical or author-year citation styles, there is also a
  648. % \texttt{cite} style available in which the label is the same as the cite
  649. % key. This is for listing entire contents of databases with the cite key
  650. % visible. 
  651. % A flag |\ifnumerical| is established because some of the following menu
  652. % features depend on which system is to be used.
  653. %    \begin{macrocode}
  654. %<*options>
  655. \newif\ifnumerical \numericalfalse
  656. \newif\ifmytemp\mytempfalse
  657. \mes{^^JSTYLE OF CITATIONS:}
  658. \optdef{*}{}{Numerical}{as in standard LaTeX}
  659. \optdef{a}{ay}{Author-year}{with some non-standard interface}
  660. \optdef{c}{cite}{Cite key}{(special for listing contents of bib file)}
  661. \getans
  662. \numericaltrue
  663. \if\ans a\numericalfalse\fi
  664. \ifnumerical\else
  665. \mes{^^JAUTHOR-YEAR SUPPORT SYSTEM:}
  666. \optdef{*}{}{Natbib}{for use with natbib.sty}
  667. \optdef{l}{alk}{Apalike}{for use with apalike.sty}
  668. \optdef{h}{har}{Harvard}{system with harvard.sty}
  669. \optdef{a}{ast}{Astronomy}{system with astron.sty}
  670. \optdef{c}{cay}{Chicago}{system with chicago.sty}
  671. \optdef{d}{cn}{Author-date}{system with authordate1-4.sty}
  672. \getans
  673. %    \end{macrocode}
  674. % The \texttt{harvard} family has been extended for \LaTeXe, and the new
  675. % \texttt{.bst} files allow the word `and' and the brackets around years
  676. % to be variable with commands. A URL entry is added, for the on-line
  677. % network reference. These features may be added too.
  678. %    \begin{macrocode}
  679. \if\ans h%
  680. \mes{^^JHARVARD EXTENSIONS INCLUDED:}
  681. \optdef{*}{harnm}{With Harvard extensions}{for LaTeX2e version of harvard.sty}
  682. \optdef{n}{}{Older Harvard}{style, for LaTeX 2.09}
  683. \getans\fi
  684. %    \end{macrocode}
  685. % \subsection*{Ordering of the listed references}
  686. %   Choices here depend on citation style. The default in both cases is
  687. % alphabetical order of all authors. For numerical style, one may also
  688. % choose an unsorted order, which means the order the same as the original
  689. % citations. This corresponds to \texttt{unsrt.bst}.
  690. % For author-year, the second choice is by label. (The label is the
  691. % optional |\bibitem| argument, and is what is printed in place of the
  692. % |\cite| command.) With this option, all the papers with the same first
  693. % author are ordered so that the one-author papers come first, followed by
  694. % the two-author papers, followed by the multiple-author papers. This is a
  695. % more sensible system for author-year citations, and is demanded by some
  696. % journals (like JGR).
  697. %    \begin{macrocode}
  698. \ifnumerical
  699. \mes{^^JORDERING OF REFERENCES:}
  700. \optdef{*}{}{Alphabetical}{by all authors}
  701. \optdef{c}{seq-no}{Citation order}{(unsorted, like unsrt.bst)}
  702. \getans
  703. \else
  704. \mes{^^JORDERING OF REFERENCES:}
  705. \optdef{*}{}{Alphabetical}{by all authors}
  706. \optdef{l}{seq-lab}{By label}%
  707.    {(Jones before Jones and James before Jones et al)}
  708. \getans
  709. %    \end{macrocode}
  710. % \subsection*{Selecting Language}\label{babelmenu}
  711. % Explicit words in the bibliography style, such as `and', `editor', etc.,
  712. % are represented by functions \texttt{bbl.and}, \texttt{bbl.editor}, and so on.
  713. % By default these functions translate to the normal English text, but
  714. % other languages are also possible. All the definitions of these functions
  715. % are kept together to simplify the addition of further languages, or to
  716. % allow someone to hack the \texttt{.bst} file for another language.
  717. %^^A NEWLANGUAGE: add an \optdef here, 
  718. %^^A              say \optdef{x}{newlang}{Name of Language}{}
  719. %^^A              where newlang is to be the docstrip option name
  720. %    \begin{macrocode}
  721. \mes{^^JLANGUAGE:}
  722. \optdef{*}{english}{English}{}
  723. \optdef{b}{babel}{Babel}{, word definitions to be found in babelbst.tex}
  724. \optdef{g}{german}{German}{}
  725. \optdef{f}{french}{French}{}
  726. \optdef{e}{espo}{Esperanto}{}
  727. \getans
  728. %    \end{macrocode}
  729. % \subsection*{Formatting author names}
  730. % The default is that the full names of the authors are listed, given names
  731. % first, unabbreviated. Of course, if only the initials have been given in
  732. % the \texttt{.bib} file, then that is all that can appear in the list. Other
  733. % possibilities are to use initials (even if full names in the \texttt{.bib}
  734. % file) either before or after the surnames. A specialty of the journals of
  735. % the American Geophysical Union is to have only the first name with
  736. % reversed initials.
  737. % If the reference is part of a larger work with editors, then the editor
  738. % names appear later in the reference text, usually as ``edited by \dots''
  739. % or as ``\emph{names} (editors)''. In these cases, the editor names are 
  740. % not usually reversed (surname first) even if the authors' names are.
  741. % An option is provided to format such editor names exactly as the authors'.
  742. %    \begin{macrocode}
  743. \mes{^^JAUTHOR NAMES:}
  744. \optdef{*}{}{Full, surname last}{(John Frederick Smith)}
  745. \optdef{i}{nm-init}{Initials + surname}{(J. J. Smith)}
  746. \optdef{r}{nm-rev}{Surname + initials}{(Smith, J. J.)}
  747. \optdef{s}{nm-rv}{Surname + dotless initials}{(Smith J J)}
  748. \optdef{a}{nm-rev1}{Only first name reversed}%
  749.    {(AGU style: Smith, J. J., H. K. Jones)}
  750. \getans
  751. \mytempfalse
  752. \if\ans r\mytemptrue\fi
  753. \if\ans s\mytemptrue\fi
  754. \if\ans a\mytemptrue\fi
  755. \ifmytemp
  756. \mes{^^JEDITOR NAMES IN COLLECTIONS:}
  757. \if\ans r
  758. \optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith}
  759. \if\ans s
  760. \optdef{*}{}{Editor names NOT reversed}{as edited by J J Smith}
  761. \if\ans a
  762. \optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith}
  763. \optdef{r}{ed-rev}{Editor names reversed}{just like authors'}
  764. \getans
  765. %    \end{macrocode}
  766. % \subsection*{Number of authors}
  767. % Normally the complete list of authors as given in the \texttt{.bib} file are
  768. % presented in the reference list. However, some journals prefer to limit
  769. % them to a maximum. If there are more than this maximum number of author
  770. % names, then a minimum number plus `et al.' are listed.
  771. % Because no test for consistency of the numbers is carried out in the
  772. % \texttt{.bst} file itself (it might be possible, but I found it too complex),
  773. % this is done here.
  774. %    \begin{macrocode}
  775. \mes{^^JNUMBER OF AUTHORS:}
  776. \optdef{*}{}{All authors}{included in listing}
  777. \optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)}
  778. \getans
  779. \if\ans l
  780. \loop
  781.   \ask{\num}{Maximum number of authors (1-9)}
  782.   \ifnum\num>9
  783.   \mes{*** Must be between 1 and 9}
  784. \repeat
  785. \wr{\spsp\spsp\sep x\num\pc: Maximum of \num\space authors}
  786. \mes{\spsp You have selected maximum \num\space authors}
  787. \ifnum\num>5\def\numx{5}\else\edef\numx{\num}\fi
  788. \loop
  789.   \ask{\num}{Minimum number (before et al given) (1-\numx)}
  790.   \ifnum\num>\numx
  791.   \mes{*** Must be between 1 and \numx}
  792. \repeat
  793. \wr{\spsp\spsp\sep m\num\pc: Minimum of \num\space authors}
  794. \mes{\spsp You have selected minimum \num\space authors}
  795. %    \end{macrocode}
  796. % \subsection*{Type face of names}
  797. % The author names in the list of references normally appear in the current
  798. % type face. This may be changed to small caps, bold, or italics.
  799. %    \begin{macrocode}
  800. \mes{^^JTYPEFACE FOR AUTHORS:}
  801. \optdef{*}{}{Normal font for authors}{}
  802. \optdef{s}{nmft-sc}{Small caps authors}{(\string\sc)}
  803. \optdef{i}{nmft-it}{Italic authors}{(\string\it\space or \string\em)}
  804. \optdef{b}{nmft-bf}{Bold authors}{(\string\bf)}
  805. \getans
  806. %    \end{macrocode}
  807. % \subsection*{Position of date}
  808. % This applies to author-year style only. It makes sense to put the date
  809. % immediately after the author list, since the two items (author and year)
  810. % are the identifiers of the reference. Default position is at the
  811. % end of the references, before any notes. It is also possible to place
  812. % it even after the notes.
  813. %    \begin{macrocode}
  814. \mes{^^JDATE POSITION:}
  815. \optdef{*}{}{Date at end}{}
  816. \optdef{b}{dt-beg}{Date after authors}{}
  817. \optdef{e}{dt-end}{Date at very end}{after any notes}
  818. \getans
  819. \if\ans b\mytemptrue\else\mytempfalse\fi
  820. %    \end{macrocode}
  821. % \subsection*{Format of date}
  822. % The year may be enclosed in parentheses, brackets, or preceded by a
  823. % colon. If none of these are selected, the date (month plus year) appears. 
  824. % For author-year, the date always consists only of the year, no month.
  825. % If the date is to go inside parentheses or brackets, and it is just after
  826. % the authors, then one might want to suppress the following punctuation.
  827. %    \begin{macrocode}
  828. \ifnumerical
  829. \mes{^^JDATE FORMAT:}
  830. \optdef{*}{}{Month and year}{without any brackets}
  831. \optdef{p}{yr-par}{Date in parentheses}{as (May 1993)}
  832. \optdef{b}{yr-brk}{Date in brackets}{as [May 1993]}
  833. \optdef{c}{yr-col}{Date preceded by colon}{as `: May 1993'}
  834. \optdef{d}{yr-per}{Date preceded by period}{as `. May 1993'}
  835. \optdef{s}{yr-blk}{Date preceded by space}{only, as ` May 1993'}
  836. \else
  837. \mes{^^JDATE FORMAT:^^J(no months for author-year)}
  838. \optdef{*}{}{Year plain}{without any brackets}
  839. \optdef{p}{yr-par}{Year in parentheses}{as (1993)}
  840. \optdef{b}{yr-brk}{Year in brackets}{as [1993]}
  841. \optdef{c}{yr-col}{Year preceded by colon}{as `: 1993'}
  842. \optdef{d}{yr-per}{Year preceded by period}{as `. 1993'}
  843. \optdef{s}{yr-blk}{Year preceded by space}{only, as ` 1993'}
  844. \getans
  845. \if\ans p\else\if\ans b\else\mytempfalse\fi\fi
  846. \ifmytemp
  847. \mes{^^JDATE PUNCTUATION:}
  848. \optdef{*}{}{Date with punctuation}{(comma or period)}
  849. \optdef{x}{yrp-x}{No punct. after date}{}
  850. \getans
  851. %    \end{macrocode}
  852. % Normally in author-year citations, the \texttt{year} entry is truncated
  853. % to the last 4 characters, which should be the 4 digits of the year. Some
  854. % users have requested the possibility of suppressing this truncation so
  855. % that they may put text in the \texttt{year} field, such as ``in press.''
  856. %    \begin{macrocode}
  857. \ifnumerical\else
  858. \mes{^^JTRUNCATE YEAR:}
  859. \optdef{*}{}{Year truncated}{to last 4 digits}
  860. \optdef{t}{note-yr}{Year text full}{to allow text in place of digits}
  861. \getans
  862. %    \end{macrocode}
  863. % \subsection*{Article title in journal}
  864. % The title of an article in a journal or in a collection (a book, or
  865. % conference proceedings) may appear plain, in italics, within single
  866. % or double quotes. 
  867. % Furthermore, it may have sentence capitalization (first
  868. % word and word following colon) or be capitalized as in the \texttt{.bib} file
  869. % entry. That is why it is recommended to capitalize the entry text as it
  870. % should appear when fully capitalized, putting words that are always
  871. % capitalized in braces. Example:
  872. % \begin{quote}
  873. % |TITLE="The Results of the {Giotto} Mission"|
  874. % \end{quote}
  875. % which produces either ``The results of the Giotto mission'' or ``The
  876. % Results of the Giotto Mission'', depending on option.
  877. % Additionally, the article titles may be fully suppressed.
  878. %    \begin{macrocode}
  879. \mes{^^JTITLE OF ARTICLE:}
  880. \optdef{*}{}{Title plain}{with no special font}
  881. \optdef{i}{tit-it}{Title italic}{(\string\em)}
  882. \optdef{q}{tit-q}{Title in single quotes}{(`Title')}
  883. \optdef{d}{tit-qq}{Title in double quotes}{(``Title'')}
  884. \getans
  885. \mes{^^JCAPITALIZATION OF ARTICLE TITLE:}
  886. \optdef{*}{}{Sentence style}{(first word and those in braces)}
  887. \optdef{t}{atit-u}{Title style}{(just as in bib entry)}
  888. \getans
  889. \mes{^^JARTICLE TITLE PRESENT:}
  890. \optdef{*}{}{Article title present}{in journals and proceedings}
  891. \optdef{x}{jtit-x}{No article title}{}
  892. \getans
  893. %    \end{macrocode}
  894. % \subsection*{Title of Theses}
  895. % The title of a these (PhD or Master's) is normally treated the same
  896. % as that of a book. Optionally, it may be formatted like that of 
  897. % an article.
  898. %    \begin{macrocode}
  899. \mes{^^JTHESIS TITLE:}
  900. \optdef{*}{}{Thesis titles like books}{}
  901. \optdef{a}{thtit-a}{Thesis title like article}{}
  902. \getans
  903. %    \end{macrocode}
  904. % \subsection*{Journal reference}
  905. % Great diversity of opinion exists as to how a journal reference is to be
  906. % formatted. It consists of a volume, possibly a number, and page limits.
  907. % The number is really only necessary if the page numbers within one volume
  908. % start at 1 for each physical `number'. Since journals are often bound
  909. % together in one volume later, it makes more sense to number the pages
  910. % continuously through the whole volume. However, this is not always so,
  911. % and then the `number' is necessary for the full specification.
  912. % A number of styles for journal specifications are
  913. % \begin{quote}
  914. % 21(2):33--55\\
  915. % \textbf{21}(2):33--55\\
  916. % \textit{21}(2), 33--55
  917. % \end{quote}
  918. % Here both start and stop page numbers have been given; often only the
  919. % start page is wanted.
  920. %    \begin{macrocode}
  921. \mes{^^JJOURNAL VOLUME NUMBER:}
  922. \optdef{*}{}{Volume plain}{as vol(num)}
  923. \optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)}
  924. \optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)}
  925. \optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}}
  926. \getans
  927. %    \end{macrocode}
  928. % The form of the `number' is also given: in parentheses, with `no.', 
  929. % with \#, or omitted.
  930. %    \begin{macrocode}
  931. \mes{^^JJOURNAL VOL AND NUMBER:}
  932. \optdef{*}{}{Journal vol(num)}{as 34(2)}
  933. \optdef{n}{vnum-nr}{Journal vol, no. num}{as 34, no. 2}
  934. \optdef{h}{vnum-h}{Journal vol, \string\# number}{as 34, \string\#2}
  935. \optdef{s}{vnum-s}{Journal vol, num}{as 34, 2}
  936. \optdef{x}{vnum-x}{Journal vol, no number}{as 34}
  937. \getans
  938. %    \end{macrocode}
  939. % It is possible to decide whether the journal name should be
  940. % separated from the following specifications with a blank or comma.
  941. %    \begin{macrocode}
  942. \mes{^^JVOLUME PUNCTUATION:}
  943. \optdef{*}{}{Volume with colon}{as vol(num):ppp}
  944. \optdef{s}{volp-sp}{Volume with colon and space}{as vol(num): ppp}
  945. \optdef{c}{volp-com}{Volume with comma}{as vol(num), ppp}
  946. \getans
  947. \mes{^^JPAGE NUMBERS:}
  948. \optdef{*}{}{Start and stop page numbers}{given}
  949. \optdef{f}{jpg-1}{Only start page number}{}
  950. \getans
  951. \mes{^^JJOURNAL NAME PUNCTUATION:}
  952. \optdef{*}{}{Comma after journal}{name}
  953. \optdef{x}{jnm-x}{Space after journal}{name}
  954. \getans
  955. %    \end{macrocode}
  956. % \subsection*{Book title}
  957. % The title of a book (as opposed to an article in a book or journal) is
  958. % normally italicized. This may be set to the regular font.
  959. %    \begin{macrocode}
  960. \mes{^^JBOOK TITLE:}
  961. \optdef{*}{}{Book title italic}{(\string\em)}
  962. \optdef{p}{btit-rm}{Book title plain}{(no font command)}
  963. \getans
  964. %    \end{macrocode}
  965. % \subsection*{Edited by}
  966. % For an article within an edited collection, the normal form is 
  967. % \begin{quote}
  968. % In J. K. James, editor, \emph{Title of Collection} \dots
  969. % \end{quote}
  970. % An alternative is the form
  971. % \begin{quote}
  972. % In \emph{Title of Collection}, edited by J. K. James \dots
  973. % \end{quote}
  974. %    \begin{macrocode}
  975. \mes{^^JEDITOR STYLE:}
  976. \optdef{*}{}{Word editor}{after name of editor}
  977. \optdef{b}{edby}{Edited by}{before name of editor}
  978. \optdef{p}{edby-par}{`(Edited by..)'}{editor(s) in parentheses}
  979. \getans
  980. %    \end{macrocode}
  981. % \subsection*{Block punctuation}
  982. % Blocks are logical sections of the reference specification, such as the
  983. % author block, the journal block, editor block, etc. These are normally
  984. % separated by periods, but alternatively a comma may be used. Another
  985. % choice is to use commas except after titles where a period is given.
  986. % In this case, one might also want the title of a work in a collection
  987. % to be followed by a period.
  988. %    \begin{macrocode}
  989. \mes{^^JPUNCTUATION BETWEEN SECTIONS (BLOCKS):}
  990. \optdef{*}{}{Period after blocks}{of authors, title, etc}
  991. \optdef{c}{blk-com}{Comma after blocks}{}
  992. \optdef{t}{blk-tit}{Only titles with period}{but other blocks commas}
  993. \getans
  994. \mytempfalse
  995. \if\ans c\mytemptrue\fi
  996. \if\ans t\mytemptrue\fi
  997. \ifmytemp
  998. \mes{^^JPUNCTUATION AFTER TITLE OF INCOLLECTION:}
  999. \optdef{*}{}{Comma after title in collection}{as Title, in:...}
  1000. \optdef{p}{in-blk}{Period after title in collection}{as Title. In:...}
  1001. \getans
  1002. %    \end{macrocode}
  1003. % \subsection*{`In' with colon}
  1004. % When referring to works in a collection, one begins the block describing
  1005. % that collection with `In'. Optionally, one may add a colon.
  1006. %    \begin{macrocode}
  1007. \mes{^^JPUNCTUATION AFTER `IN':}
  1008. \optdef{*}{}{Space after `in'}{for editted works or proceedings}
  1009. \optdef{c}{in-col}{Colon after `in'}{(as `In: ...')}
  1010. \getans
  1011. %    \end{macrocode}
  1012. % \subsection*{Final punctuation}
  1013. % The punctuation at the end of the reference is normally a period. This
  1014. % may be suppressed.
  1015. %    \begin{macrocode}
  1016. \mes{^^JFINAL PUNCTUATION:}
  1017. \optdef{*}{}{Period at very end}{of the listed reference}
  1018. \optdef{x}{fin-bare}{No period at end}{}
  1019. \getans
  1020. %    \end{macrocode}
  1021. % \subsection*{Abbreviations}
  1022. % A number of words may be abbreviated: pages, editors, volume, chapter,
  1023. % and so on. The first two may be independently set to abbreviation, the
  1024. % rest with a single option. 
  1025. % Additionally, the edition numbers may be
  1026. % output as words (first, second, etc.) or as numbers (1st, 2nd, etc.). 
  1027. % (Recall that the input in the \texttt{.bib} file is always as English
  1028. % words.)
  1029. %    \begin{macrocode}
  1030. \mes{^^JABBREVIATE WORD `PAGES':}
  1031. \optdef{*}{}{`Page(s)'}{(no abbreviation)}
  1032. \optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
  1033. \getans
  1034. \mes{^^JABBREVIATE WORD `EDITORS':}
  1035. \optdef{*}{}{`Editor(s)'}{(no abbreviation)}
  1036. \optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.}
  1037. \getans
  1038. \mes{^^JOTHER ABBREVIATIONS:}
  1039. \optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc}
  1040. \optdef{a}{abr}{Abbreviations}{of such words}
  1041. \getans
  1042. \mes{^^JEDITION NUMBERS:}
  1043. \optdef{*}{}{Write out editions}{as first, second, third, etc}
  1044. \optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc}
  1045. \getans
  1046. %    \end{macrocode}
  1047. % \subsection*{Citation label}
  1048. % This applies to author-year style only. The label is the text written
  1049. % by the |\cite| command, and for author-year style, this is something like
  1050. % `Daly et al.\ (1990b)'. One may select italics for the authors and for the
  1051. % extra label attached to the year. The year always remains plain.
  1052. % It is not possible to select the type of brackets for the year, since
  1053. % this is determined by the \LaTeX{} style option that manages the
  1054. % author-year citations. This is not standard \LaTeX, so that there are a
  1055. % number of private style files for achieving this.
  1056. %    \begin{macrocode}
  1057. \ifnumerical\else
  1058. \mes{^^JFONT OF CITATION LABEL:}
  1059. \optdef{*}{}{Cited authors plain}{as result of \string\cite\space command}
  1060. \optdef{i}{lab-it}{Cited authors italic}{}
  1061. \getans
  1062. \mes{^^JFONT OF EXTRA LABEL:^^J(The extra letter on the year)}
  1063. \optdef{*}{}{Extra label plain}{}
  1064. \optdef{i}{xlab-it}{Extra label italic}{}
  1065. \getans
  1066. %    \end{macrocode}
  1067. % \subsection*{Variations on `and'}
  1068. % It is possible to replace the word `and' with an ampersand \&, and to
  1069. % specify whether a comma is to precede `and' in a list of more than two
  1070. % names.
  1071. %    \begin{macrocode}
  1072. \mes{^^JAMPERSAND:}
  1073. \optdef{*}{}{Use word `and'}{in author lists}
  1074. \optdef{a}{amper}{Use ampersand}{in place of `and'}
  1075. \getans
  1076. \mes{^^JCOMMA BEFORE `AND':}
  1077. \optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'}
  1078. \optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'}
  1079. \optdef{c}{and-com}{Comma with 2 authors}{as `Tom, and Harry'}
  1080. \getans
  1081. \mes{^^JNO `AND' IN REFERENCE LIST:}
  1082. \optdef{*}{}{With `and'}{before last author in reference list}
  1083. \optdef{x}{xand}{No `and'}{as `Tom, Dick, Harry'}
  1084. \getans
  1085. %    \end{macrocode}
  1086. % \subsection*{Font of `et al'}
  1087. % One can chose that `et al.'\ be put into italics.
  1088. %    \begin{macrocode}
  1089. \mes{^^JFONT OF `ET AL':}
  1090. \optdef{*}{}{Plain et al}{}
  1091. \optdef{i}{etal-it}{Italic et al}{}
  1092. \getans
  1093. %    \end{macrocode}
  1094. % \subsection*{Define emphasis}
  1095. % In everything that been mentioned so far, italicization should be
  1096. % understood to mean `emphasize' in the \LaTeX{} sense. This means that the
  1097. % command |\em| is used. This is not the same as |\it|, which is always
  1098. % italics. Rather, with |\em|, the font style switches between |\rm| and
  1099. % |\it| depending on the context. Here one may choose to true italics, or
  1100. % to switch off italics altogether.
  1101. %    \begin{macrocode}
  1102. \mes{^^JEMPHASIS:^^J(affects all so-called italics)}
  1103. \optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching}
  1104. \optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics}
  1105. \optdef{x}{em-x}{No italics}{at all}
  1106. \getans
  1107. %    \end{macrocode}
  1108. % \subsection*{New Font Selection Scheme}
  1109. % Bold face, italics, and emphasis are made with the \LaTeX~2.09 commands.
  1110. % This makes them compatible with \LaTeXe{} as well, but it is possible that
  1111. % in future they might die out. Also, they might not be provided with
  1112. % future classes. Allow an option to use the New Font Selection Scheme (NFSS)
  1113. % font commands in \LaTeXe. If this option is taken, then the \texttt{.bst}
  1114. % file may only be used with \LaTeXe.
  1115. %    \begin{macrocode}
  1116. \mes{^^JNEW FONT SELECTION SCHEME:}
  1117. \optdef{*}{}{No NFSS}{use 2.09 font commands}
  1118. \optdef{n}{nfss}{NFSS}{use \string\textbf, \string\emph, not \string\bf,
  1119.                        \string\em}
  1120. \getans
  1121. \endoptions
  1122. %</options>
  1123. %    \end{macrocode}
  1124. % \StopEventually{\PrintChanges
  1125. %  \end{document}}
  1126. % \section{The Bibliographic Coding}
  1127. %    \begin{macrocode}
  1128. %<*!options&!bblbst>
  1129. %%---------------------------------------------------------------------
  1130.  % This bibliography style file is intended for texts in
  1131. %^^A NEWLANGUAGE: add an entry here, e.g.
  1132. %^^A              %<newlang>             NAME OF LANGUAGE
  1133. %<english> %               ENGLISH
  1134. %<german> %                GERMAN
  1135. %<french> %                FRENCH
  1136. %<espo> %                  ESPERANTO
  1137. %<babel> %                 BABEL (definitions of words in babelbst.tex)
  1138. %<*ay>
  1139.  % This is an author-year citation style bibliography. As such, it is 
  1140.  % non-standard LaTeX, and requires a special package file to function properly.
  1141.  % Such a package is    natbib.sty   by Patrick W. Daly
  1142. %<*alk>
  1143.  % or:                  apalike.sty  by Oren Patashnik
  1144.  % The form of the \bibitem entries is
  1145.  %   \bibitem[Jones et al., 1990]{key}...
  1146. %</alk>
  1147. %<*!(har|ast|alk|cay|cn)>
  1148.  % The form of the \bibitem entries is
  1149.  %   \bibitem[Jones et al.(1990)]{key}...
  1150. %<nat> %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
  1151.  % The essential feature is that the label (the part in brackets) consists
  1152.  % of the author names, as they should appear in the citation, with the year
  1153.  % in parentheses following. There must be no space before the opening
  1154.  % parenthesis!
  1155. %<nat> % With natbib v5.3, a full list of authors may also follow the year.
  1156.  % In natbib.sty, it is possible to define the type of enclosures that is
  1157.  % really wanted (brackets or parentheses), but in either case, there must
  1158.  % be parentheses in the label.
  1159.  % The \cite command functions as follows:
  1160.  %   \cite{key} ==>>                Jones et al. (1990)
  1161.  %   \cite[]{key} ==>>              (Jones et al., 1990)
  1162.  %   \cite[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
  1163.  %   \cite[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
  1164.  %   \cite[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
  1165.  %   \citeauthor{key}               Jones et al.
  1166. %<nat> %   \citefullauthor{key}           Jones, Baker, and Smith
  1167.  %   \citeyear{key}                 1990
  1168. %</!(har|ast|alk|cay|cn)>
  1169. %<*har>
  1170.  % or:                  harvard.sty  by Peter Williams and Thorsten Schnier
  1171. %<harnm> % (needs natbib v5.3  or  harvard v2.0.3)
  1172.  % The form of the bibitem entries is
  1173.  %   \harvarditem[Jones et al.]{Jones, Baker, and Smith}{1990}{key}...
  1174. %</har>
  1175. %<*cay>
  1176.  % or:                  chicago.sty 
  1177.  % The form of the bibitem entries is
  1178.  %   \bibitem[\protect\citeauthoryear{Jones, Baker, and Smith}
  1179.  %        {Jones et al.}{1990}{key}...
  1180. %</cay>
  1181. %<*ast>
  1182.  % or:                  astron.sty 
  1183.  % The form of the bibitem entries is
  1184.  %   \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
  1185. %</ast>
  1186. %<*cn>
  1187.  % or:                  authordate1-4.sty
  1188.  % The form of the bibitem entries is
  1189.  %   \bibitem[\protect\citename{Jones et al.}1990]{key}...
  1190. %</cn>
  1191. %</ay>
  1192. %<*!ay>
  1193.  % This is a numerical citation style, and as such is standard LaTeX.
  1194.  % It requires no extra package to interface to the main text.
  1195.  % The form of the \bibitem entries is 
  1196.  %   \bibitem{key}...
  1197.  % Usage of \cite is as follows:
  1198.  %   \cite{key} ==>>          [#]
  1199.  %   \cite[chap. 2]{key} ==>> [#, chap. 2]
  1200.  % where # is a number determined by the ordering in the reference list.
  1201. %<*seq-no> 
  1202.  % This is the order in which the works were originally cited in the text.
  1203. %</seq-no> 
  1204. %<*!seq-no> 
  1205.  % This is alphabetical by authors.
  1206. %</!seq-no> 
  1207. %</!ay>
  1208. %<*!ay&cite>
  1209.  % This is a special pseudo-numerical bibliography style. The form of 
  1210.  % the \bibitem entries is
  1211.  %   \bibitem[key]{key}...
  1212.  % It is intended to be used to list all the entries in a bib database
  1213. %</!ay&cite>
  1214. %%---------------------------------------------------------------------
  1215. %    \end{macrocode}
  1216. % \changes{2.3}{1994 Sep 16}{Add URL entry type for \texttt{harnm} option}
  1217. %  The new \texttt{harvard.sty} of \LaTeXe{} includes an entry URL, or
  1218. %  rather it is included in the new \texttt{.bst} files for it. Add it 
  1219. %  here too, but only for option \texttt{harnm}.
  1220. %    \begin{macrocode}
  1221. ENTRY
  1222.   { address
  1223.     author
  1224.     booktitle
  1225.     chapter
  1226.     edition
  1227.     editor
  1228.     howpublished
  1229.     institution
  1230.     journal
  1231.     key
  1232.     month
  1233.     note
  1234.     number
  1235.     organization
  1236.     pages
  1237.     publisher
  1238.     school
  1239.     series
  1240.     title
  1241.     type
  1242. %<harnm>    URL
  1243.     volume
  1244.     year
  1245. %<!ay>  { label }
  1246. %<ay>  { label extra.label sort.label }
  1247. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  1248. FUNCTION {init.state.consts}
  1249. { #0 'before.all :=
  1250.   #1 'mid.sentence :=
  1251.   #2 'after.sentence :=
  1252.   #3 'after.block :=
  1253. STRINGS { s t }
  1254. FUNCTION {output.nonnull}
  1255. { 's :=
  1256.   output.state mid.sentence =
  1257.     { ", " * write$ }
  1258.     { output.state after.block =
  1259.         { add.period$ write$
  1260.           newline$
  1261.           "\newblock " write$
  1262.         }
  1263.         { output.state before.all =
  1264.             'write$
  1265.             { add.period$ " " * write$ }
  1266.           if$
  1267.         }
  1268.       if$
  1269.       mid.sentence 'output.state :=
  1270.     }
  1271.   if$
  1272. FUNCTION {output}
  1273. { duplicate$ empty$
  1274.     'pop$
  1275.     'output.nonnull
  1276.   if$
  1277. FUNCTION {output.check}
  1278. { 't :=
  1279.   duplicate$ empty$
  1280.     { pop$ "empty " t * " in " * cite$ * warning$ }
  1281.     'output.nonnull
  1282.   if$
  1283. FUNCTION {fin.entry}
  1284. %<*!fin-bare>
  1285. { add.period$
  1286.   write$
  1287. %</!fin-bare>
  1288. %<*fin-bare>
  1289. { duplicate$ empty$   
  1290.     'pop$
  1291.     'write$
  1292.   if$
  1293. %</fin-bare>
  1294.   newline$
  1295. FUNCTION {new.block}
  1296. { output.state before.all =
  1297.     'skip$
  1298.     { after.block 'output.state := }
  1299.   if$
  1300. FUNCTION {new.sentence}
  1301. { output.state after.block =
  1302.     'skip$
  1303.     { output.state before.all =
  1304.         'skip$
  1305.         { after.sentence 'output.state := }
  1306.       if$
  1307.     }
  1308.   if$
  1309. FUNCTION {add.blank}
  1310. { " " * before.all 'output.state :=
  1311. FUNCTION {not}
  1312. {   { #0 }
  1313.     { #1 }
  1314.   if$
  1315. FUNCTION {and}
  1316. {   'skip$
  1317.     { pop$ #0 }
  1318.   if$
  1319. FUNCTION {or}
  1320. {   { pop$ #1 }
  1321.     'skip$
  1322.   if$
  1323. %    \end{macrocode}
  1324. % \begin{macro}{`non.stop'}
  1325. % \changes{2.2a}{1994 Sep 8}{Add to test if last character
  1326. %   is punctuation: . ! ?}
  1327. % This function (my invention) tests if the last character in the string
  1328. % on the stack is \texttt{. ! ?} by using \texttt{add.period\$}. It is to
  1329. % be used for conditional italic correction or adding commas.
  1330. %    \begin{macrocode}
  1331. FUNCTION {non.stop}
  1332. { duplicate$ 
  1333.    "}" * add.period$ 
  1334.    #-1 #1 substring$ "." =
  1335. %    \end{macrocode}
  1336. % \end{macro}
  1337. %    \begin{macrocode}
  1338. %<*!ay>
  1339. FUNCTION {new.block.checka}
  1340. { empty$
  1341.     'skip$
  1342.     'new.block
  1343.   if$
  1344. %</!ay>
  1345. FUNCTION {new.block.checkb}
  1346. { empty$
  1347.   swap$ empty$
  1348.   and
  1349.     'skip$
  1350.     'new.block
  1351.   if$
  1352. %<*!ay>
  1353. FUNCTION {new.sentence.checka}
  1354. { empty$
  1355.     'skip$
  1356.     'new.sentence
  1357.   if$
  1358. FUNCTION {new.sentence.checkb}
  1359. { empty$
  1360.   swap$ empty$
  1361.   and
  1362.     'skip$
  1363.     'new.sentence
  1364.   if$
  1365. %</!ay>
  1366. FUNCTION {field.or.null}
  1367. { duplicate$ empty$
  1368.     { pop$ "" }
  1369.     'skip$
  1370.   if$
  1371. %    \end{macrocode}
  1372. % \begin{macro}{`emphasize'}
  1373. % Emphasis can be either italic or the alternating font. The font command
  1374. % may be NFSS or regular \LaTeX~2.09 declarations.
  1375. %\changes{2.1}{1994 Jul 1}{Add \texttt{nfss} option}
  1376. %    \begin{macrocode}
  1377. FUNCTION {emphasize}
  1378. %<*!em-x>
  1379. { duplicate$ empty$
  1380.     { pop$ "" }
  1381. %<*!nfss>
  1382. %<!em-it>    { "{\em " swap$ * "\/}" * }
  1383. %<em-it>    { "{\it " swap$ * "\/}" * }
  1384. %</!nfss>
  1385. %<*nfss>
  1386. %<!em-it>    { "\emph{" swap$ * "}" * }
  1387. %<em-it>    { "\textit{" swap$ * "}" * }
  1388. %</nfss>
  1389.   if$
  1390. %</!em-x>
  1391. %<em-x>{ skip$ }
  1392. %<*nmft-bf|vol-bf|vol-2bf>
  1393. %    \end{macrocode}
  1394. % \end{macro}
  1395. % \begin{macro}{`bolden'}
  1396. % The bold font command may be NFSS or the regular \LaTeX~2.09 declaration.
  1397. %\changes{2.1}{1994 Jul 1}{Add \texttt{nfss} option}
  1398. %    \begin{macrocode}
  1399. FUNCTION {bolden}
  1400. { duplicate$ empty$
  1401.     { pop$ "" }
  1402. %<!nfss>    { "{\bf " swap$ * "}" * }
  1403. %<nfss>    { "\textbf{" swap$ * "}" * }
  1404.   if$
  1405. %</nmft-bf|vol-bf|vol-2bf>
  1406. %    \end{macrocode}
  1407. % \end{macro}
  1408. % \begin{macro}{`space.word'}
  1409. % \changes{2.0}{1994 Jan 31}{Add function to space out words; necessary
  1410. %          for the multilingual functions.}
  1411. % The function \texttt{space.word} adds a space before and after the word or
  1412. % words currently on the stack. This was added for the \texttt{bbl.}$nnn$
  1413. % functions, that contain only a word without spacing, but replace explicit
  1414. % text in the originals that were spaced out. Its seems more flexible to
  1415. % define the word functions to be without spacing.
  1416. %    \begin{macrocode}
  1417. FUNCTION {space.word}
  1418. { " " swap$ * " " * }
  1419.  % Here are the language-specific definitions for explicit words.
  1420.  % Each function has a name bbl.xxx where xxx is the English word.
  1421. %    \end{macrocode}
  1422. % \end{macro}
  1423. %^^A NEWLANGUAGE: take everything from here to \end{macrocode}
  1424. %^^A   copy it, change english to newlang, change the English words.
  1425. %^^A   Also change the introductory text accordingly (lines preceding
  1426. %^^A   \begin{macrocode}. These lines beginning with %^^A may be left off.
  1427. %^^A   If a double-quote is to appear (see German bbl.fifth), use \qq
  1428. %^^A     instead and change begin.bib as for German.
  1429. % \begin{macro}{`bbl.xxx'}
  1430. % \changes{2.0}{1994 Jan 31}{Replace all explicit words with functions
  1431. %     of the form \texttt{bbl.xxx}.}
  1432. % These are the default English words. In fact, there is no default, for
  1433. % even English must be given explicitly as an option. This is due to the
  1434. % nature of \dtx{} in which the default can only be selected by
  1435. % negating all the other languages. This would make adding languages
  1436. % difficult. Furthermore, \btx{} does not allow an existing function to
  1437. % be redefined. 
  1438. %    \begin{macrocode}
  1439. %<*english>
  1440.  % The language selected here is ENGLISH
  1441. FUNCTION {bbl.and}
  1442. { "and"}
  1443. FUNCTION {bbl.editors}
  1444. %<!ed>{ "editors" }
  1445. %<ed>{ "eds." }
  1446. FUNCTION {bbl.editor}
  1447. %<!ed>{ "editor" }
  1448. %<ed>{ "ed." }
  1449. FUNCTION {bbl.edby}
  1450. { "edited by" }
  1451. FUNCTION {bbl.edition}
  1452. %<!abr>{ "edition" }
  1453. %<abr>{ "edn." }
  1454. FUNCTION {bbl.vvolume}
  1455. %<!abr>{ "Volume" }
  1456. %<abr>{ "Vol." }
  1457. FUNCTION {bbl.volume}
  1458. %<!abr>{ "volume" }
  1459. %<abr>{ "vol." }
  1460. FUNCTION {bbl.of}
  1461. { "of" }
  1462. FUNCTION {bbl.nnumber}
  1463. %<!abr>{ "Number" }
  1464. %<abr>{ "No." }
  1465. FUNCTION {bbl.number}
  1466. %<!abr>{ "number" }
  1467. %<abr>{ "no." }
  1468. FUNCTION {bbl.nr}
  1469. { "no." }
  1470. FUNCTION {bbl.in}
  1471. { "in" }
  1472. FUNCTION {bbl.iin}
  1473. { "In" }
  1474. FUNCTION {bbl.pages}
  1475. %<!pp>{ "pages" }
  1476. %<pp>{ "pp." }
  1477. FUNCTION {bbl.page}
  1478. %<!pp>{ "page" }
  1479. %<pp>{ "p." }
  1480. FUNCTION {bbl.chapter}
  1481. %<!abr>{ "chapter" }
  1482. %<abr>{ "chap." }
  1483. FUNCTION {bbl.techrep}
  1484. %<!abr>{ "Technical Report" }
  1485. %<abr>{ "Tech. Rep." }
  1486. FUNCTION {bbl.mthesis}
  1487. { "Master's thesis" }
  1488. FUNCTION {bbl.phdthesis}
  1489. { "Ph.D. thesis" }
  1490. FUNCTION {bbl.first}
  1491. %<!ord>{ "First" }
  1492. %<ord>{ "1st" }
  1493. FUNCTION {bbl.second}
  1494. %<!ord>{ "Second" }
  1495. %<ord>{ "2nd" }
  1496. FUNCTION {bbl.third}
  1497. %<!ord>{ "Third" }
  1498. %<ord>{ "3rd" }
  1499. FUNCTION {bbl.fourth}
  1500. %<!ord>{ "Fourth" }
  1501. %<ord>{ "4th" }
  1502. FUNCTION {bbl.fifth}
  1503. %<!ord>{ "Fifth" }
  1504. %<ord>{ "5th" }
  1505. FUNCTION {bbl.st}
  1506. { "st" }
  1507. FUNCTION {bbl.nd}
  1508. { "nd" }
  1509. FUNCTION {bbl.rd}
  1510. { "rd" }
  1511. FUNCTION {bbl.th}
  1512. { "th" }
  1513. %</english>
  1514. %^^A When editions numbers extended, change text. Look for maxeds.
  1515. %    \end{macrocode}
  1516. % Here are the definitions for \texttt{babel} option, i.e., explicit
  1517. % translations are not used, but rather only \LaTeX{} macros that must be
  1518. % defined in the file \texttt{babelbst.tex}. This could allow automatic
  1519. % language selection.
  1520. %    \begin{macrocode}
  1521. %<*babel>
  1522.  % The BABEL language selection is made here; definitions in babelbst.tex.
  1523. FUNCTION {bbl.and}
  1524. { "\bbland{}"}
  1525. FUNCTION {bbl.editors}
  1526. %<!ed>{ "\bbleditors{}" }
  1527. %<ed>{ "\bbleds{}" }
  1528. FUNCTION {bbl.editor}
  1529. %<!ed>{ "\bbleditor{}" }
  1530. %<ed>{ "\bbled{}" }
  1531. FUNCTION {bbl.edby}
  1532. { "\bbledby{}" }
  1533. FUNCTION {bbl.edition}
  1534. %<!abr>{ "\bbledition{}" }
  1535. %<abr>{ "\bbledn{}" }
  1536. FUNCTION {bbl.vvolume}
  1537. %<!abr>{ "\bblVolume{}" }
  1538. %<abr>{ "\bblVol{}" }
  1539. FUNCTION {bbl.volume}
  1540. %<!abr>{ "\bblvolume{}" }
  1541. %<abr>{ "\bblvol{}" }
  1542. FUNCTION {bbl.of}
  1543. { "\bblof{}" }
  1544. FUNCTION {bbl.nnumber}
  1545. %<!abr>{ "\bblNumber{}" }
  1546. %<abr>{ "\bblNo{}" }
  1547. FUNCTION {bbl.number}
  1548. %<!abr>{ "\bblnumber{}" }
  1549. %<abr>{ "\bblno{}" }
  1550. FUNCTION {bbl.nr}
  1551. { "\bblno{}" }
  1552. FUNCTION {bbl.in}
  1553. { "\bblin{}" }
  1554. FUNCTION {bbl.iin}
  1555. { "\bblIn{}" }
  1556. FUNCTION {bbl.pages}
  1557. %<!pp>{ "\bblpages{}" }
  1558. %<pp>{ "\bblpp{}" }
  1559. FUNCTION {bbl.page}
  1560. %<!pp>{ "\bblpage{}" }
  1561. %<pp>{ "\bblp{}" }
  1562. FUNCTION {bbl.chapter}
  1563. %<!abr>{ "\bblchapter{}" }
  1564. %<abr>{ "\bblchap{}" }
  1565. FUNCTION {bbl.techrep}
  1566. %<!abr>{ "\bbltechreport{}" }
  1567. %<abr>{ "\bbltechrep{}" }
  1568. FUNCTION {bbl.mthesis}
  1569. { "\bblmthesis{}" }
  1570. FUNCTION {bbl.phdthesis}
  1571. { "\bblphdthesis{}" }
  1572. FUNCTION {bbl.first}
  1573. %<!ord>{ "\bblfirst{}" }
  1574. %<ord>{ "\bblfirsto{}" }
  1575. FUNCTION {bbl.second}
  1576. %<!ord>{ "\bblsecond{}" }
  1577. %<ord>{ "\bblsecondo{}" }
  1578. FUNCTION {bbl.third}
  1579. %<!ord>{ "\bblthird{}" }
  1580. %<ord>{ "\bblthirdo{}" }
  1581. FUNCTION {bbl.fourth}
  1582. %<!ord>{ "\bblfourth{}" }
  1583. %<ord>{ "\bblfourtho{}" }
  1584. FUNCTION {bbl.fifth}
  1585. %<!ord>{ "\bblfifth{}" }
  1586. %<ord>{ "\bblfiftho{}" }
  1587. FUNCTION {bbl.st}
  1588. { "\bblst" }
  1589. FUNCTION {bbl.nd}
  1590. { "\bblnd" }
  1591. FUNCTION {bbl.rd}
  1592. { "\bblrd" }
  1593. FUNCTION {bbl.th}
  1594. { "\bblth" }
  1595. %</babel>
  1596. %    \end{macrocode}
  1597. % The German translations of the explicit word functions.
  1598. %    \begin{macrocode}
  1599. %<*german>
  1600.  % The language selected here is GERMAN
  1601. FUNCTION {bbl.and}
  1602. { "und"}
  1603. FUNCTION {bbl.editors}
  1604. %<!ed>{ "Redakteure" }
  1605. %<ed>{ "Red." }
  1606. FUNCTION {bbl.editor}
  1607. %<!ed>{ "Redakteur" }
  1608. %<ed>{ "Red." }
  1609. FUNCTION {bbl.edby}
  1610. { "herausgegeben von" }
  1611. FUNCTION {bbl.edition}
  1612. %<!abr>{ "Auflage" }
  1613. %<abr>{ "Aufl." }
  1614. FUNCTION {bbl.vvolume}
  1615. %<!abr>{ "Band" }
  1616. %<abr>{ "Bd." }
  1617. FUNCTION {bbl.volume}
  1618. %<!abr>{ "Band" }
  1619. %<abr>{ "Bd." }
  1620. FUNCTION {bbl.of}
  1621. { "von" }
  1622. FUNCTION {bbl.nnumber}
  1623. %<!abr>{ "Nummer" }
  1624. %<abr>{ "No." }
  1625. FUNCTION {bbl.number}
  1626. %<!abr>{ "Nummer" }
  1627. %<abr>{ "Nr." }
  1628. FUNCTION {bbl.nr}
  1629. { "Nr." }
  1630. FUNCTION {bbl.in}
  1631. { "in" }
  1632. FUNCTION {bbl.iin}
  1633. { "In" }
  1634. FUNCTION {bbl.pages}
  1635. %<!pp>{ "Seiten" }
  1636. %<pp>{ "S." }
  1637. FUNCTION {bbl.page}
  1638. %<!pp>{ "Seite" }
  1639. %<pp>{ "S." }
  1640. FUNCTION {bbl.chapter}
  1641. %<!abr>{ "Kapitel" }
  1642. %<abr>{ "Kap." }
  1643. FUNCTION {bbl.techrep}
  1644. %<!abr>{ "Technischer Bericht" }
  1645. %<abr>{ "Tech. Ber." }
  1646. FUNCTION {bbl.mthesis}
  1647. { "Diplomarbeit" }
  1648. FUNCTION {bbl.phdthesis}
  1649. { "Doktorarbeit" }
  1650. FUNCTION {bbl.first}
  1651. %<!ord>{ "Erste" }
  1652. %<ord>{ "1." }
  1653. FUNCTION {bbl.second}
  1654. %<!ord>{ "Zweite" }
  1655. %<ord>{ "2." }
  1656. FUNCTION {bbl.third}
  1657. %<!ord>{ "Dritte" }
  1658. %<ord>{ "3." }
  1659. FUNCTION {bbl.fourth}
  1660. %<!ord>{ "Vierte" }
  1661. %<ord>{ "4." }
  1662. FUNCTION {bbl.fifth}
  1663. %<!ord>{ "F\qq{u}nfte" }
  1664. %<ord>{ "5." }
  1665. FUNCTION {bbl.th}
  1666. { "." }
  1667. %</german>
  1668. %    \end{macrocode}
  1669. % The French translations of the explicit word functions.
  1670. %    \begin{macrocode}
  1671. %<*french>
  1672.  % The language selected here is FRENCH
  1673. FUNCTION {bbl.and}
  1674. { "et"}
  1675. FUNCTION {bbl.editors}
  1676. %<!ed>{ "r\'edacteurs" }
  1677. %<ed>{ "r\'eds." }
  1678. FUNCTION {bbl.editor}
  1679. %<!ed>{ "r\'edacteur" }
  1680. %<ed>{ "r\'ed." }
  1681. FUNCTION {bbl.edby}
  1682. { "edit\'e par" }
  1683. FUNCTION {bbl.edition}
  1684. %<!abr>{ "\'edition" }
  1685. %<abr>{ "\'edn." }
  1686. FUNCTION {bbl.vvolume}
  1687. %<!abr>{ "Tome" }
  1688. %<abr>{ "Tm." }
  1689. FUNCTION {bbl.volume}
  1690. %<!abr>{ "tome" }
  1691. %<abr>{ "tm." }
  1692. FUNCTION {bbl.of}
  1693. { "de" }
  1694. FUNCTION {bbl.nnumber}
  1695. %<!abr>{ "Num\'ero" }
  1696. %<abr>{ "No." }
  1697. FUNCTION {bbl.number}
  1698. %<!abr>{ "num\'ero" }
  1699. %<abr>{ "no." }
  1700. FUNCTION {bbl.nr}
  1701. { "no." }
  1702. FUNCTION {bbl.in}
  1703. { "dans" }
  1704. FUNCTION {bbl.iin}
  1705. { "Dans" }
  1706. FUNCTION {bbl.pages}
  1707. %<!pp>{ "pages" }
  1708. %<pp>{ "pp." }
  1709. FUNCTION {bbl.page}
  1710. %<!pp>{ "page" }
  1711. %<pp>{ "p." }
  1712. FUNCTION {bbl.chapter}
  1713. %<!abr>{ "chapitre" }
  1714. %<abr>{ "chap." }
  1715. FUNCTION {bbl.techrep}
  1716. %<!abr>{ "Rapport technique" }
  1717. %<abr>{ "Rap. tech." }
  1718. FUNCTION {bbl.mthesis}
  1719. { "Th\`ese de ma\^itre" }
  1720. FUNCTION {bbl.phdthesis}
  1721. { "Th\`ese de doctorat" }
  1722. FUNCTION {bbl.first}
  1723. %<!ord>{ "Premi\`ere" }
  1724. %<ord>{ "1$^{\mbox{\scriptsize re}}$" }
  1725. FUNCTION {bbl.second}
  1726. %<!ord>{ "Deuxi\`eme" }
  1727. %<ord>{ "2$^{\mbox{\scriptsize e}}$" }
  1728. FUNCTION {bbl.third}
  1729. %<!ord>{ "Troisi\`eme" }
  1730. %<ord>{ "3$^{\mbox{\scriptsize e}}$" }
  1731. FUNCTION {bbl.fourth}
  1732. %<!ord>{ "Quatri\`eme" }
  1733. %<ord>{ "4$^{\mbox{\scriptsize e}}$" }
  1734. FUNCTION {bbl.fifth}
  1735. %<!ord>{ "Cinqui\`eme" }
  1736. %<ord>{ "5$^{\mbox{\scriptsize e}}$" }
  1737. FUNCTION {bbl.th}
  1738. { "$^{\mbox{\scriptsize e}}$" }
  1739. %</french>
  1740. %    \end{macrocode}
  1741. % The Esperanto translations of the explicit word functions.
  1742. %    \begin{macrocode}
  1743. %<*espo>
  1744.  % The language selected here is ESPERANTO
  1745. FUNCTION {bbl.and}
  1746. { "kaj"}
  1747. FUNCTION {bbl.editors}
  1748. %<!ed>{ "redaktoroj" }
  1749. %<ed>{ "red-oj" }
  1750. FUNCTION {bbl.editor}
  1751. %<!ed>{ "redaktoro" }
  1752. %<ed>{ "red-o" }
  1753. FUNCTION {bbl.edby}
  1754. { "redaktito de" }
  1755. FUNCTION {bbl.edition}
  1756. %<!abr>{ "eldono" }
  1757. %<abr>{ "eld." }
  1758. FUNCTION {bbl.vvolume}
  1759. %<!abr>{ "Volumo" }
  1760. %<abr>{ "Vol." }
  1761. FUNCTION {bbl.volume}
  1762. %<!abr>{ "volumo" }
  1763. %<abr>{ "vol." }
  1764. FUNCTION {bbl.of}
  1765. { "el" }
  1766. FUNCTION {bbl.nnumber}
  1767. %<!abr>{ "Numero" }
  1768. %<abr>{ "N-ro" }
  1769. FUNCTION {bbl.number}
  1770. %<!abr>{ "numero" }
  1771. %<abr>{ "n-ro" }
  1772. FUNCTION {bbl.nr}
  1773. { "n-ro" }
  1774. FUNCTION {bbl.in}
  1775. { "en" }
  1776. FUNCTION {bbl.iin}
  1777. { "En" }
  1778. FUNCTION {bbl.pages}
  1779. %<!pp>{ "pa\^goj" }
  1780. %<pp>{ "pp." }
  1781. FUNCTION {bbl.page}
  1782. %<!pp>{ "pa\^go" }
  1783. %<pp>{ "p\^g" }
  1784. FUNCTION {bbl.chapter}
  1785. %<!abr>{ "\^capitro" }
  1786. %<abr>{ "\^cap." }
  1787. FUNCTION {bbl.techrep}
  1788. %<!abr>{ "Teknica Raporto" }
  1789. %<abr>{ "Tek. Rap." }
  1790. FUNCTION {bbl.mthesis}
  1791. { "Magistra tezo" }
  1792. FUNCTION {bbl.phdthesis}
  1793. { "Doktora tezo" }
  1794. FUNCTION {bbl.first}
  1795. %<!ord>{ "Unua" }
  1796. %<ord>{ "1-a" }
  1797. FUNCTION {bbl.second}
  1798. %<!ord>{ "Dua" }
  1799. %<ord>{ "2-a" }
  1800. FUNCTION {bbl.third}
  1801. %<!ord>{ "Tria" }
  1802. %<ord>{ "3-a" }
  1803. FUNCTION {bbl.fourth}
  1804. %<!ord>{ "Kvara" }
  1805. %<ord>{ "4-a" }
  1806. FUNCTION {bbl.fifth}
  1807. %<!ord>{ "Kvina" }
  1808. %<ord>{ "5-a" }
  1809. FUNCTION {bbl.th}
  1810. { "-a" }
  1811. %</espo>
  1812. %    \end{macrocode}
  1813. % \end{macro}
  1814. % \begin{macro}{`write.url'}
  1815. % \changes{2.3}{1994 Sep 16}{Add \texttt{write.url} for option \texttt{harnm}}
  1816. % This function taken over from \texttt{agsm.sty}, the main \texttt{harvard}
  1817. % bib style.
  1818. %    \begin{macrocode}
  1819. %<*harnm>
  1820. FUNCTION {write.url}
  1821. { URL empty$
  1822.     { skip$ }
  1823.     { "\newline\harvardurl{" URL * "}" * write$ newline$ }
  1824.   if$
  1825. %</harnm>
  1826. %    \end{macrocode}
  1827. % \end{macro}
  1828. % \begin{macro}{`format.names'}
  1829. % \changes{2.3}{1994 Sep 16}{Add \texttt{harvard} command for `and' with
  1830. %    new option \texttt{harnm}}
  1831. % The \texttt{harvard} package now (version 2.0.3, for \LaTeXe) uses 
  1832. % |\harvardand| in place of the word `and' so that it can be changed
  1833. % at run time. This is allowed for with the option \texttt{harnm}, which
  1834. % need not be used only with the \texttt{har} option.
  1835. % This seems like a useless feature for \texttt{.bst} files made from
  1836. % this multilanguage source. However, it is included anyway, which means
  1837. % if \texttt{harnm} option selected, one must redefine |\harvardand|
  1838. % in the document for the language being used.
  1839. %    \begin{macrocode}
  1840. INTEGERS { nameptr namesleft numnames }
  1841. FUNCTION {format.names}
  1842. { 's :=
  1843.   #1 'nameptr :=
  1844.   s num.names$ 'numnames :=
  1845.   numnames 'namesleft :=
  1846.     { namesleft #0 > }
  1847. %<*!nm-rev1>
  1848.     { s nameptr 
  1849. %<!nm-init&!nm-rev&!nm-rv>      "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  1850. %<nm-init>      "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
  1851. %<!nm-init&nm-rev>      "{vv~}{ll}{, jj}{, f.}" format.name$ 't := 
  1852. %<!nm-init&!nm-rev&nm-rv>      "{vv~}{ll}{ jj}{ f{~}}" format.name$ 't := 
  1853. %</!nm-rev1>
  1854. %<*nm-rev1>
  1855.     { nameptr #1 >
  1856.         { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := }
  1857.         { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := }
  1858.       if$
  1859. %</nm-rev1>
  1860.       nameptr #1 >
  1861.         { 
  1862. %<*nmlm>
  1863. %<m1>          nameptr #2 =
  1864. %<m2>          nameptr #3 =
  1865. %<m3>          nameptr #4 =
  1866. %<m4>          nameptr #5 =
  1867. %<m5>          nameptr #6 =
  1868. %<x1>          numnames #1 > and
  1869. %<x2>          numnames #2 > and
  1870. %<x3>          numnames #3 > and
  1871. %<x4>          numnames #4 > and
  1872. %<x5>          numnames #5 > and
  1873. %<x6>          numnames #6 > and
  1874. %<x7>          numnames #7 > and
  1875. %<x8>          numnames #8 > and
  1876. %<x9>          numnames #9 > and
  1877.             { "others" 't :=
  1878.               #1 'namesleft := }
  1879.             'skip$
  1880.           if$
  1881. %</nmlm>
  1882.           namesleft #1 >
  1883.             { ", " * t * }
  1884.             {
  1885. %<and-com|xand>              "," *
  1886. %<*!and-xcom&!and-com&!xand>
  1887.               numnames #2 >
  1888.                 { "," * }
  1889.                 'skip$
  1890.               if$
  1891. %</!and-xcom&!and-com&!xand>
  1892.               t "others" =
  1893. %<!etal-it>                { " et~al." * }
  1894. %<etal-it>                { " " * "et~al." emphasize * }
  1895. %<*!harnm>
  1896. %<!amper&!xand>                { bbl.and space.word * t * }
  1897. %<amper&!xand>                { " \& " * t * }
  1898. %</!harnm>
  1899. %<harnm&!xand>                { " \harvardand\ " * t * }
  1900. %<xand>                { " " * t * }
  1901.               if$
  1902.             }
  1903.           if$
  1904.         }
  1905.         't
  1906.       if$
  1907.       nameptr #1 + 'nameptr :=
  1908.       namesleft #1 - 'namesleft :=
  1909.     }
  1910.   while$
  1911. %    \end{macrocode}
  1912. % \end{macro}
  1913. % \begin{macro}{`format.names.ed'}
  1914. % \changes{2.4}{1995 Feb 2}{Add option \texttt{ed-rev} to allow editor
  1915. %    to be formatted just like authors'}
  1916. % When editors are used in place of authors to identify the work, the
  1917. % names are always formatted just like authors'. However, in collections,
  1918. % where ``edited by'' or ``\emph{names} (editors)'' are given, it is
  1919. % normal not the reverse the names, even if the authors' are. The option
  1920. % \texttt{ed-rev} sees to it that editor names are always formatted exactly
  1921. % like those of authors, being reversed if necessary.
  1922. %    \begin{macrocode}
  1923. FUNCTION {format.names.ed}
  1924. %<ed-rev>{ format.names }
  1925. %<*!ed-rev>
  1926. { 's :=
  1927.   #1 'nameptr :=
  1928.   s num.names$ 'numnames :=
  1929.   numnames 'namesleft :=
  1930.     { namesleft #0 > }
  1931.     { s nameptr 
  1932. %<!nm-init&!nm-rev&!nm-rev1&!nm-rv>      "{ff~}{vv~}{ll}{, jj}" 
  1933. %<nm-init|nm-rev|nm-rev1>      "{f.~}{vv~}{ll}{, jj}" 
  1934. %<!nm-init&!nm-rev&!nm-rev1&nm-rv>      "{f{~}~}{vv~}{ll}{ jj}" 
  1935.       format.name$ 't := 
  1936.       nameptr #1 >
  1937.         { 
  1938.           namesleft #1 >
  1939.             { ", " * t * }
  1940.             {
  1941. %<and-com|xand>              "," *
  1942. %<*!and-xcom&!and-com&!xand>
  1943.               numnames #2 >
  1944.                 { "," * }
  1945.                 'skip$
  1946.               if$
  1947. %</!and-xcom&!and-com&!xand>
  1948.               t "others" =
  1949. %<!etal-it>                { " et~al." * }
  1950. %<etal-it>                { " " * "et~al." emphasize * }
  1951. %<*!harnm>
  1952. %<!amper&!xand>                { bbl.and space.word * t * }
  1953. %<amper&!xand>                { " \& " * t * }
  1954. %</!harnm>
  1955. %<harnm&!xand>                { " \harvardand\ " * t * }
  1956. %<xand>                { " " * t * }
  1957.               if$
  1958.             }
  1959.           if$
  1960.         }
  1961.         't
  1962.       if$
  1963.       nameptr #1 + 'nameptr :=
  1964.       namesleft #1 - 'namesleft :=
  1965.     }
  1966.   while$
  1967. %</!ed-rev>
  1968. %    \end{macrocode}
  1969. % \end{macro}
  1970. %    \begin{macrocode}
  1971. %<*ay>
  1972. FUNCTION {format.key}                   
  1973. { empty$
  1974.     { key field.or.null }
  1975.     { "" }
  1976.   if$
  1977. %</ay>
  1978. FUNCTION {format.authors}
  1979. { author empty$
  1980.     { "" }
  1981. %<!nmft-sc&!nmft-bf&!nmft-it>    { author format.names }
  1982. %<nmft-sc>    { "{\sc " author format.names * "}" * }
  1983. %<!nmft-sc&nmft-bf>    { author format.names bolden }
  1984. %<!nmft-sc&!nmft-bf&nmft-it>    { author format.names emphasize }
  1985.   if$
  1986. FUNCTION {format.editors}
  1987. { editor empty$
  1988.     { "" }
  1989. %<!nmft-sc&!nmft-bf&!nmft-it>    { editor format.names 
  1990. %<nmft-sc>    { "{\sc " editor format.names * "}" * 
  1991. %<!nmft-sc&nmft-bf>    { editor format.names bolden 
  1992. %<!nmft-sc&!nmft-bf&nmft-it>    { editor format.names emphasize 
  1993.       editor num.names$ #1 >
  1994.         { ", " * bbl.editors * }
  1995.         { ", " * bbl.editor * }
  1996.       if$
  1997.     }
  1998.   if$
  1999. FUNCTION {format.in.editors}
  2000. { editor empty$
  2001.     { "" }
  2002.     { editor format.names.ed
  2003. %<*!edby&!edby-par>
  2004.       editor num.names$ #1 >
  2005.         { ", " * bbl.editors * }
  2006.         { ", " * bbl.editor * }
  2007.       if$
  2008. %</!edby&!edby-par>
  2009.     }
  2010.   if$
  2011. %    \end{macrocode}
  2012. % \begin{macro}{`format.title'}
  2013. % \changes{2.2a}{1994 Sep 7}{Add enquote function to put titles in quotes,
  2014. %    such that punctuation is inside quotes.}
  2015. %    \begin{macrocode}
  2016. FUNCTION {format.title}
  2017. { title empty$
  2018.     { "" }
  2019. %<!atit-u>    { title "t" change.case$ 
  2020. %<atit-u>    { title 
  2021. %<tit-it>      emphasize
  2022. %<*!tit-it&(tit-q|tit-qq)>
  2023.       "\enquote{" swap$ * 
  2024. %<*blk-com>
  2025.       non.stop
  2026.         { ",} " * }
  2027.         { "} " * }
  2028.       if$
  2029. %</blk-com>
  2030. %<!blk-com>      add.period$ "}" *
  2031. %</!tit-it&(tit-q|tit-qq)>
  2032.     }
  2033.   if$
  2034. %    \end{macrocode}
  2035. % \end{macro}
  2036. % \begin{macro}{`make.full.names'}
  2037. % \changes{1.1}{1993 Nov 12}{Add key labels to \texttt{calc.long.label} and
  2038. %     get {\tt'author} and {\tt'editor} in right order when author
  2039. %     missing.}
  2040. % \changes{2.2}{1994 Sep 5}{Remove \texttt{calc.long.label} and
  2041. %     \texttt{format.long.lab.names}, replacing them with 
  2042. %     \texttt{format.full.names}, \texttt{make.full.names}, and adding
  2043. %     \texttt{author.editor.key}, \texttt{author.key}, and \texttt{editor.key}}
  2044. % \changes{2.2a}{1994 Sep 7}{Remove option \texttt{and-com} from 
  2045. %     \texttt{make.full.names}}
  2046. % \changes{2.3}{1994 Sep 15}{Add full names for \texttt{natbib} v5.3}
  2047. % In versions before 2.2, there were two functions \texttt{calc.long.label}
  2048. % and \texttt{format.long.lab.names} that made up the string
  2049. % \texttt{long.label} for each entry. This contains the full author list.
  2050. % However, there was a bug in the one routine, entered by mistake when an
  2051. % earlier bug was removed, and more seriously, the string
  2052. % \texttt{long.label} was limited to \texttt{entry.max\$} characters, 100 on
  2053. % my system. Author lists were truncated.  Thus, \texttt{make.full.names}
  2054. % is used instead to enter the full list of names directly in the
  2055. % \texttt{output.bibitem} function, without an intermediate string. This
  2056. % involves changing the order of some function definitions, especially
  2057. % \texttt{output.bibitem} must come later.
  2058. %    \begin{macrocode}
  2059. %<*har|cay|nat>
  2060. FUNCTION {format.full.names}
  2061. {'s :=
  2062.   #1 'nameptr :=
  2063.   s num.names$ 'numnames :=
  2064.   numnames 'namesleft :=
  2065.     { namesleft #0 > }
  2066.     { s nameptr 
  2067.       "{vv~}{ll}" format.name$ 't :=
  2068.       nameptr #1 >
  2069.         { 
  2070. %<*nmlm>
  2071. %<m1>          nameptr #2 =
  2072. %<m2>          nameptr #3 =
  2073. %<m3>          nameptr #4 =
  2074. %<m4>          nameptr #5 =
  2075. %<m5>          nameptr #6 =
  2076. %<x1>          numnames #1 > and
  2077. %<x2>          numnames #2 > and
  2078. %<x3>          numnames #3 > and
  2079. %<x4>          numnames #4 > and
  2080. %<x5>          numnames #5 > and
  2081. %<x6>          numnames #6 > and
  2082. %<x7>          numnames #7 > and
  2083. %<x8>          numnames #8 > and
  2084. %<x9>          numnames #9 > and
  2085.             { "others" 't :=
  2086.               #1 'namesleft := }
  2087.             'skip$
  2088.           if$
  2089. %</nmlm>
  2090.           namesleft #1 >
  2091.             { ", " * t * }
  2092.             {
  2093. %<*!and-xcom>
  2094.               numnames #2 >
  2095.                 { "," * }
  2096.                 'skip$
  2097.               if$
  2098. %</!and-xcom>
  2099.               t "others" =
  2100. %<!etal-it>                { " et~al." * }
  2101. %<etal-it>                { " " * "et~al." emphasize * }
  2102. %<*!harnm>
  2103. %<!amper>                { bbl.and space.word * t * }
  2104. %<amper>                { " \& " * t * }
  2105. %</!harnm>
  2106. %<harnm>                { " \harvardand\ " * t * }
  2107.               if$
  2108.             }
  2109.           if$
  2110.         }
  2111.         't
  2112.       if$
  2113.       nameptr #1 + 'nameptr :=
  2114.       namesleft #1 - 'namesleft :=
  2115.     }
  2116.   while$
  2117. FUNCTION {author.editor.key.full}
  2118. { author empty$
  2119.     { editor empty$
  2120.         { key empty$
  2121.             { cite$ #1 #3 substring$ }
  2122.             'key
  2123.           if$
  2124.         }
  2125.         { editor format.full.names }
  2126.       if$
  2127.     }  
  2128.     { author format.full.names }
  2129.   if$
  2130. FUNCTION {author.key.full}
  2131. { author empty$
  2132.     { key empty$
  2133.          { cite$ #1 #3 substring$ }
  2134.           'key
  2135.       if$
  2136.     }  
  2137.     { author format.full.names }
  2138.   if$
  2139. FUNCTION {editor.key.full}
  2140. { editor empty$
  2141.     { key empty$
  2142.          { cite$ #1 #3 substring$ }
  2143.           'key
  2144.       if$
  2145.     }  
  2146.     { editor format.full.names }
  2147.   if$
  2148. FUNCTION {make.full.names}
  2149. { type$ "book" =
  2150.   type$ "inbook" =
  2151.     'author.editor.key.full
  2152.     { type$ "proceedings" =
  2153.         'editor.key.full
  2154.         'author.key.full
  2155.       if$
  2156.     }
  2157.   if$
  2158. %<lab-it>  emphasize
  2159. %</har|cay|nat>
  2160. %    \end{macrocode}
  2161. % \end{macro}
  2162. % \begin{macro}{`output.bibitem'}
  2163. %\changes{1.1}{1993 Nov 12}{Test for missing year, set to {\tt????}.}
  2164. % The \texttt{output.bibitem} function formats the |\bibitem| entries.
  2165. %\changes{2.2}{1994 Sep 5}{Move to later location, add
  2166. %   \texttt{make.full.names} instead of inserting string \texttt{long.label}}
  2167. %\changes{2.3}{1994 Sep 16}{Add option \texttt{nat} for full author list
  2168. %  for \texttt{natbib.sty} version~5.3}
  2169. %    \begin{macrocode}
  2170. FUNCTION {output.bibitem}
  2171. { newline$
  2172. %<*ay>
  2173. %<!har>  "\bibitem[" write$
  2174. %<har>  "\harvarditem[" write$
  2175. %<ast>  "\protect\astroncite{" write$
  2176. %<cay>  "\protect\citeauthoryear{" make.full.names * "}{" * write$
  2177. %<cn>  "\protect\citename{" write$
  2178.   label write$
  2179. %<har>  "]{" make.full.names * "}{" * write$
  2180. %<har>  year duplicate$ empty$
  2181. %<cn>  ", }" year duplicate$ empty$
  2182. %<cay|ast>  "}{" year duplicate$ empty$
  2183. %<har|cn|cay|ast>    { pop$ "????" }
  2184. %<har|cn|cay|ast>    'skip$
  2185. %<har|cn|cay|ast>  if$
  2186. %<har>  extra.label * "}{" * write$
  2187. %<cn>  * extra.label * "]{" * write$
  2188. %<cay|ast>  * extra.label * "}]{" * write$
  2189. %<alk>  "]{" write$
  2190. %<!(har|cay|ast|alk|cn|nat)>  ")]{" write$
  2191. %<nat>  ")" make.full.names * "]{" * write$
  2192. %</ay>
  2193. %<!ay&!cite>  "\bibitem{" write$
  2194. %<!ay&cite>  "\bibitem[" label * "]{" * write$
  2195.   cite$ write$
  2196.   "}" write$
  2197.   newline$
  2198.   before.all 'output.state :=
  2199. %    \end{macrocode}
  2200. % \end{macro}
  2201. %    \begin{macrocode}
  2202. FUNCTION {n.dashify}
  2203. { 't :=
  2204.     { t empty$ not }
  2205.     { t #1 #1 substring$ "-" =
  2206.         { t #1 #2 substring$ "--" = not
  2207.             { "--" *
  2208.               t #2 global.max$ substring$ 't :=
  2209.             }
  2210.             {   { t #1 #1 substring$ "-" = }
  2211.                 { "-" *
  2212.                   t #2 global.max$ substring$ 't :=
  2213.                 }
  2214.               while$
  2215.             }
  2216.           if$
  2217.         }
  2218.         { t #1 #1 substring$ *
  2219.           t #2 global.max$ substring$ 't :=
  2220.         }
  2221.       if$
  2222.     }
  2223.   while$
  2224. %    \end{macrocode}
  2225. % \begin{macro}{`word.in'}
  2226. % \changes{2.0}{1994 Jan 31}{Function \texttt{word.in} constructed out of 
  2227. %        \texttt{bbl.in} or \texttt{bbl.iin}.}
  2228. % The function \texttt{word.in} prints the word ``in'' for references that are
  2229. % contained in a larger work, or in conference proceedings. One may have a
  2230. % colon after the word with the option \texttt{in-col}. If blocks of text are
  2231. % to be separated with commas (option \texttt{blk-com}) then the word remains
  2232. % in lower case, as it is defined in \texttt{bbl.in}; but if blocks act as
  2233. % sentences, then it must be capitalized by using \texttt{bbl.iin}.
  2234. %    \begin{macrocode}
  2235. FUNCTION {word.in}
  2236. %<blk-com&!in-blk>{ bbl.in
  2237. %<!blk-com|in-blk>{ bbl.iin
  2238. %<in-col>  ":" *
  2239.   " " * }
  2240. %    \end{macrocode}
  2241. % \end{macro}
  2242. % \begin{macro}{`format.date'}
  2243. % \changes{2.2}{1994 Sep 6}{Add option \texttt{yr-per} to put period 
  2244. %    before date}
  2245. % \changes{2.3}{1994 Sep 16}{Add \texttt{harvard} bracket names to year
  2246. %    with new option \texttt{harnm}}
  2247. % \changes{2.4}{1995 Feb 2}{Add \texttt{yr-blk} for no punctuation before
  2248. %    the date}
  2249. % The new \texttt{harvard.sty} allows variable brackets around the date
  2250. % in the reference list. It uses |\harvardyearleft| and |\harvardyearright|
  2251. % in the \texttt{.bst} files. Allow this with the option \texttt{harnm},
  2252. % which could actually be used without the \texttt{har} option. Note that
  2253. % this overrides the other year formatting options.
  2254. %    \begin{macrocode}
  2255. %<*ay>
  2256. FUNCTION {format.date}
  2257. { year duplicate$ empty$
  2258.     { "empty year in " cite$ * "; set to ????" * warning$ 
  2259.        pop$ "????" }
  2260.     'skip$
  2261.   if$
  2262. %<*!harnm>
  2263. %<yr-par|yr-brk|yr-col|yr-blk>  before.all 'output.state :=
  2264. %<yr-par>  " (" swap$ * extra.label * ")" *
  2265. %<!yr-par&yr-brk>  " [" swap$ * extra.label * "]" *
  2266. %<!yr-par&!yr-brk&yr-col>  ": " swap$ * extra.label *
  2267. %<!yr-par&!yr-brk&!yr-col&yr-per>  after.sentence 'output.state :=
  2268. %<!yr-par&!yr-brk&!yr-col&!yr-per&yr-blk>  " " swap$ *
  2269. %<!yr-par&!yr-brk&!yr-col>  extra.label *
  2270. %</!harnm>
  2271. %<harnm>  " \harvardyearleft " swap$ * extra.label * " \harvardyearright " *
  2272. %</ay>
  2273. %<*!ay>
  2274. FUNCTION {format.date}
  2275. { year empty$
  2276.     { month empty$
  2277.         { "" }
  2278.         { "there's a month but no year in " cite$ * warning$
  2279.           month
  2280.         }
  2281.       if$
  2282.     }
  2283.     { month empty$
  2284.         'year
  2285.         { month " " * year * }
  2286.       if$
  2287.     }
  2288.   if$
  2289. %<yr-par|yr-brk|yr-col|yr-blk>  before.all 'output.state :=
  2290. %<yr-par>  " (" swap$ * ")" *
  2291. %<!yr-par&yr-brk>  " [" swap$ * "]" *
  2292. %<!yr-par&!yr-brk&yr-col>  ": " swap$ *
  2293. %<!yr-par&!yr-brk&!yr-col&yr-per>  after.sentence 'output.state :=
  2294. %<!yr-par&!yr-brk&!yr-col&!yr-per&yr-blk>  " " swap$ *
  2295. %</!ay>
  2296. %    \end{macrocode}
  2297. % \end{macro}
  2298. %    \begin{macrocode}
  2299. FUNCTION {format.btitle}
  2300. %<!btit-rm>{ title emphasize
  2301. %<btit-rm>{ title 
  2302. FUNCTION {tie.or.space.connect}
  2303. { duplicate$ text.length$ #3 <
  2304.     { "~" }
  2305.     { " " }
  2306.   if$
  2307.   swap$ * *
  2308. FUNCTION {either.or.check}
  2309. { empty$
  2310.     'pop$
  2311.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  2312.   if$
  2313. FUNCTION {format.bvolume}
  2314. { volume empty$
  2315.     { "" }
  2316.     { bbl.volume volume tie.or.space.connect
  2317.       series empty$
  2318.         'skip$
  2319.         { bbl.of space.word * series emphasize * }
  2320.       if$
  2321.       "volume and number" number either.or.check
  2322.     }
  2323.   if$
  2324. FUNCTION {format.number.series}
  2325. { volume empty$
  2326.     { number empty$
  2327.         { series field.or.null }
  2328.         { output.state mid.sentence =
  2329.             { bbl.number }
  2330.             { bbl.nnumber }
  2331.           if$
  2332.           number tie.or.space.connect
  2333.           series empty$
  2334.             { "there's a number but no series in " cite$ * warning$ }
  2335.             { bbl.in space.word * series * }
  2336.           if$
  2337.         }
  2338.       if$
  2339.     }
  2340.     { "" }
  2341.   if$
  2342. %    \end{macrocode}
  2343. % \begin{macro}{`is.num'}
  2344. % \changes{2.0}{1994 Jan 31}{Add function to test for digit.}
  2345. % This function takes the single-character string on the stack and returns
  2346. % 1 if it is a digit, else 0.
  2347. %    \begin{macrocode}
  2348. FUNCTION {is.num}
  2349. { chr.to.int$ 
  2350.   duplicate$ "0" chr.to.int$ < not 
  2351.   swap$ "9" chr.to.int$ > not and
  2352. %    \end{macrocode}
  2353. % \end{macro}
  2354. % \begin{macro}{`extract.num'}
  2355. % \changes{2.0}{1994 Jan 31}{Add function to extract leading number from
  2356. %        a literal string.}
  2357. % This function tests the string on the stack to see if it begins with a
  2358. % number. If so, that number is left on the stack; if the string contains
  2359. % no numbers at the start, it is left unchanged. The idea is to convert
  2360. % `1st' to `1' and leave `first' as is. This is used by {\tt
  2361. % convert.edition}.
  2362. %    \begin{macrocode}
  2363. FUNCTION {extract.num}
  2364. { duplicate$ 't :=
  2365.   "" 's :=
  2366.   { t empty$ not }
  2367.   { t #1 #1 substring$
  2368.     t #2 global.max$ substring$ 't :=
  2369.     duplicate$ is.num
  2370.       { s swap$ * 's := }
  2371.       { pop$ "" 't := }
  2372.     if$
  2373.   while$
  2374.   s empty$
  2375.     'skip$ 
  2376.     { pop$ s }
  2377.   if$
  2378. %    \end{macrocode}
  2379. % \end{macro}
  2380. % \begin{macro}{`eng.ord'}
  2381. % \changes{2.0}{1994 Jan 31}{Add function to format English ordinals.}
  2382. % This function adds English endings for ordinals 1, 2, 3. However, if
  2383. % the second last digit is 1, then the ending is `th' for all last digits.
  2384. % So far, all other languages included do not have this problem, and it is
  2385. % sufficient to add the `th' equivalent. This might change with further
  2386. % languages. 
  2387. % This function must be included with \texttt{babel} too, since that includes
  2388. % English. This means that the language definition files must also provide
  2389. % for |\bblst|, |\bblnd|, and |\bblrd|, setting them all equal to |\bblth|.
  2390. %^^A NEWLANGUAGE: read the above paragraphs and decide if your language
  2391. %^^A              needs something like this too. If so, start hacking.
  2392. %    \begin{macrocode}
  2393. %<*english|babel>
  2394. FUNCTION {eng.ord}
  2395. { duplicate$ "1" swap$ * 
  2396.   #-2 #1 substring$ "1" =
  2397.      { bbl.th * }
  2398.      { duplicate$ #-1 #1 substring$ 
  2399.        duplicate$ "1" =
  2400.          { pop$ bbl.st * }
  2401.          { duplicate$ "2" =
  2402.              { pop$ bbl.nd * }
  2403.              { "3" =
  2404.                  { bbl.rd * }
  2405.                  { bbl.th * }
  2406.                if$
  2407.              }
  2408.            if$
  2409.           }
  2410.        if$
  2411.      }         
  2412.    if$
  2413. %</english|babel>
  2414. %    \end{macrocode}
  2415. % \end{macro}
  2416. % \begin{macro}{`convert.edition'}
  2417. % \changes{2.0}{1994 Jan 31}{Add function to convert \texttt{edition} entry
  2418. %      text from word to a function}
  2419. % The function \texttt{convert.edition} takes the text in the field 
  2420. % \texttt{edition} and changes it to the language-specific equivalent. As
  2421. % originally planned for \btx, this field should contain the words `First',
  2422. % `Second', etc. Being so explicit, it is not so easy to translate, nor to
  2423. % convert to `1st', `2nd', etc., if one wanted. This function carries out
  2424. % the translation, by changing `first' or `1' to \texttt{bbl.first}, and so
  2425. % on. The field is reduced to lower case to make it case insensitive. If no
  2426. % translation is found, then the original text in \texttt{edition} is used
  2427. % instead, as it stands. However, if the original is a number greater than
  2428. % the maximum for which text is provided, then \texttt{bbl.th} is added to
  2429. % it.
  2430. %    \begin{macrocode}
  2431. FUNCTION {convert.edition}
  2432. { edition extract.num "l" change.case$ 's :=
  2433.   s "first" = s "1" = or
  2434.     { bbl.first 't := }
  2435.     { s "second" = s "2" = or
  2436.         { bbl.second 't := }
  2437.         { s "third" = s "3" = or
  2438.             { bbl.third 't := }
  2439.             { s "fourth" = s "4" = or
  2440.                 { bbl.fourth 't := }
  2441.                 { s "fifth" = s "5" = or
  2442.                     { bbl.fifth 't := }
  2443.                     { s #1 #1 substring$ is.num
  2444. %<!english&!babel>                        { s bbl.th * 't := }
  2445. %<english|babel>                        { s eng.ord 't := }
  2446.                         { edition 't := }
  2447.                       if$
  2448.                     }
  2449.                   if$
  2450.                 }
  2451.               if$
  2452.             }
  2453.           if$
  2454.         }
  2455.       if$
  2456.     }
  2457.   if$
  2458. %    \end{macrocode}
  2459. % \end{macro}
  2460. % \begin{macro}{`format.edition'}
  2461. % \changes{2.0}{1994 Jan 31}{Add call to \texttt{convert.edition}}
  2462. % This function formats the text for the edition specification, such as
  2463. % ``Second edition''. It combines the edition number with the word
  2464. % `edition'. 
  2465. %    \begin{macrocode}
  2466. FUNCTION {format.edition}
  2467. { edition empty$
  2468.     { "" }
  2469.     { output.state mid.sentence =
  2470.         { convert.edition "l" change.case$ " " * bbl.edition * }
  2471.         { convert.edition "t" change.case$ " " * bbl.edition * }
  2472.       if$
  2473.     }
  2474.   if$
  2475. %    \end{macrocode}
  2476. % \end{macro}
  2477. %    \begin{macrocode}
  2478. INTEGERS { multiresult }
  2479. FUNCTION {multi.page.check}
  2480. { 't :=
  2481.   #0 'multiresult :=
  2482.     { multiresult not
  2483.       t empty$ not
  2484.       and
  2485.     }
  2486.     { t #1 #1 substring$
  2487.       duplicate$ "-" =
  2488.       swap$ duplicate$ "," =
  2489.       swap$ "+" =
  2490.       or or
  2491.         { #1 'multiresult := }
  2492.         { t #2 global.max$ substring$ 't := }
  2493.       if$
  2494.     }
  2495.   while$
  2496.   multiresult
  2497. FUNCTION {format.pages}
  2498. { pages empty$
  2499.     { "" }
  2500.     { pages multi.page.check
  2501.         { bbl.pages pages n.dashify tie.or.space.connect }
  2502.         { bbl.page pages tie.or.space.connect }
  2503.       if$
  2504.     }
  2505.   if$
  2506. %<*jpg-1|pg-1>
  2507. FUNCTION {first.page}
  2508. { 't :=
  2509.     {  t empty$ not t #1 #1 substring$ "-" = not and }
  2510.     { t #1 #1 substring$ *
  2511.       t #2 global.max$ substring$ 't :=
  2512.     }
  2513.   while$
  2514. %</jpg-1|pg-1>
  2515. %    \end{macrocode}
  2516. % \begin{macro}{`format.vol.num.pages'}
  2517. % \changes{2.2}{1994 Sep 6}{Add option \texttt{volp-sp} to put space
  2518. %    after colon in vol:~page.}
  2519. % \changes{2.3c}{1995 Jan 20}{Add options \texttt{vnum-h}, \texttt{vnum-nr} 
  2520. %    and \texttt{vnum-x} for various formats of journal vol number}
  2521. % \changes{2.4}{1995 Feb 2}{Add option \texttt{vnum-s}}
  2522. %    \begin{macrocode}
  2523. FUNCTION {format.vol.num.pages}
  2524. { volume field.or.null
  2525. %<vol-bf&!vol-2bf>  bolden
  2526. %<!vol-bf&!vol-2bf&vol-it>  emphasize
  2527. %<*!vnum-x>
  2528.   number empty$
  2529.     'skip$
  2530.     { 
  2531. %<!vnum-nr&!vnum-h&!vnum-s>      "(" number * ")" * *
  2532. %<vnum-nr>      ", no." number tie.or.space.connect *
  2533. %<!vnum-nr&vnum-h>      ", \#" number * *
  2534. %<!vnum-nr&!vnum-h&vnum-s>      ", " number * *
  2535. %<!vol-bf&vol-2bf>      bolden
  2536.       volume empty$
  2537.         { "there's a number but no volume in " cite$ * warning$ }
  2538.         'skip$
  2539.       if$
  2540.     }
  2541.   if$
  2542. %</!vnum-x>
  2543.   pages empty$
  2544.     'skip$
  2545.     { duplicate$ empty$
  2546.         { pop$ format.pages }
  2547. %<!volp-com&!volp-sp&!jpg-1>        { ":" * pages n.dashify * }
  2548. %<volp-sp&!jpg-1>        { ": " * pages n.dashify * }
  2549. %<volp-com&!volp-sp&!jpg-1>        { ", " * pages n.dashify * }
  2550. %<!volp-com&!volp-sp&jpg-1>        { ":" * pages first.page * }
  2551. %<volp-sp&jpg-1>        { ": " * pages first.page * }
  2552. %<volp-com&!volp-sp&jpg-1>        { ", " * pages first.page * }
  2553.       if$
  2554.     }
  2555.   if$
  2556. %    \end{macrocode}
  2557. % \end{macro}
  2558. %    \begin{macrocode}
  2559. FUNCTION {format.chapter.pages}
  2560. { chapter empty$
  2561.     'format.pages
  2562.     { type empty$
  2563.         { bbl.chapter }
  2564.         { type "l" change.case$ }
  2565.       if$
  2566.       chapter tie.or.space.connect
  2567.       pages empty$
  2568.         'skip$
  2569.         { ", " * format.pages * }
  2570.       if$
  2571.     }
  2572.   if$
  2573. %    \end{macrocode}
  2574. % \begin{macro}{`format.in.ed.booktitle'}
  2575. % \changes{2.3b}{1995 Jan 18}{Add option \texttt{edby-par} to put editors
  2576. %   in parentheses}
  2577. % \changes{2.4}{1995 Feb 2}{If \texttt{ed} and \texttt{edby} given together,
  2578. %   abbreviate `edited by' to `ed(s).'}
  2579. %    \begin{macrocode}
  2580. FUNCTION {format.in.ed.booktitle}
  2581. { booktitle empty$
  2582.     { "" }
  2583.     { editor empty$
  2584.         { word.in booktitle emphasize * }
  2585. %<!edby&!edby-par>        { word.in format.in.editors * ", " * 
  2586. %<!edby&!edby-par>          booktitle emphasize * }
  2587. %<*edby|edby-par>
  2588.         { word.in booktitle emphasize * 
  2589. %<*!ed>
  2590. %<edby>          ", " * bbl.edby * " " *
  2591. %<edby-par>          " (" * 
  2592. %<edby-par>          bbl.edby "u" change.case$ "t" change.case$ * " " *
  2593. %</!ed>
  2594. %<*ed>
  2595. %<edby>          ", " *
  2596. %<edby-par>          " (" *
  2597.           editor num.names$ #1 >
  2598.             'bbl.editors 
  2599.             'bbl.editor 
  2600.           if$
  2601. %<edby-par>          "u" change.case$ "t" change.case$ 
  2602.           * " " *
  2603. %</ed>
  2604.           format.in.editors * 
  2605. %<edby-par>          ")" *
  2606.         }
  2607. %</edby|edby-par>
  2608.       if$
  2609.     }
  2610.   if$
  2611. %    \end{macrocode}
  2612. % \end{macro}
  2613. %    \begin{macrocode}
  2614. %<*!ay>
  2615. FUNCTION {empty.misc.check}
  2616. { author empty$ title empty$ howpublished empty$
  2617.   month empty$ year empty$ note empty$
  2618.   and and and and and
  2619.   key empty$ not and
  2620.     { "all relevant fields are empty in " cite$ * warning$ }
  2621.     'skip$
  2622.   if$
  2623. %</!ay>
  2624. FUNCTION {format.thesis.type}
  2625. { type empty$
  2626.     'skip$
  2627.     { pop$
  2628.       type "t" change.case$
  2629.     }
  2630.   if$
  2631. FUNCTION {format.tr.number}
  2632. { type empty$
  2633.     { bbl.techrep }
  2634.     'type
  2635.   if$
  2636.   number empty$
  2637.     { "t" change.case$ }
  2638.     { number tie.or.space.connect }
  2639.   if$
  2640. %    \end{macrocode}
  2641. % \begin{macro}{`format.article.crossref'}
  2642. %\changes{2.1}{1994 Jul 1}{Emphasize \texttt{journal} with \texttt{emphasize}, 
  2643. %          not explicitly}
  2644. % The \texttt{journal} field was emphasized emplicitly, but it should be
  2645. % done by command.
  2646. %    \begin{macrocode}
  2647. FUNCTION {format.article.crossref}
  2648. %<*!ay>
  2649.   key empty$
  2650.     { journal empty$
  2651.         { "need key or journal for " cite$ * " to crossref " * crossref *
  2652.           warning$
  2653.           ""
  2654.         }
  2655.         { word.in journal emphasize * } 
  2656.       if$
  2657.     }
  2658.     { word.in key * " " *}
  2659.   if$
  2660. %</!ay>
  2661. %<ay>  word.in
  2662.   " \cite{" * crossref * "}" *
  2663. %    \end{macrocode}
  2664. % \end{macro}
  2665. %    \begin{macrocode}
  2666. %<*!ay>
  2667. FUNCTION {format.crossref.editor}
  2668. { editor #1 "{vv~}{ll}" format.name$
  2669.   editor num.names$ duplicate$
  2670.   #2 >
  2671. %<!etal-it>    { pop$ " et~al." * }
  2672. %<etal-it>    { pop$ " " * "et~al." emphasize * }
  2673.     { #2 <
  2674.         'skip$
  2675.         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2676. %<!etal-it>            { " et~al." * }
  2677. %<etal-it>            { " " * "et~al." emphasize * }
  2678. %<*!harnm>
  2679. %<!amper>            { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
  2680. %<amper>            { " \& " * editor #2 "{vv~}{ll}" format.name$ * }
  2681. %</!harnm>
  2682. %<harnm>            { " \harvardand\ " * editor #2 "{vv~}{ll}" format.name$ * }
  2683.           if$
  2684.         }
  2685.       if$
  2686.     }
  2687.   if$
  2688. %</!ay>
  2689. %    \end{macrocode}
  2690. % \begin{macro}{`format.book.crossref'}
  2691. %\changes{2.1}{1994 Jul 1}{Emphasize \texttt{series} with \texttt{emphasize}, 
  2692. %          not explicitly}
  2693. % The \texttt{series} field was emphasized emplicitly, but it should be
  2694. % done by command.
  2695. %    \begin{macrocode}
  2696. FUNCTION {format.book.crossref}
  2697. { volume empty$
  2698.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  2699.       word.in
  2700.     }
  2701. %<(blk-com|blk-tit)>    { bbl.volume volume tie.or.space.connect
  2702. %<!(blk-com|blk-tit)>    { bbl.vvolume volume tie.or.space.connect
  2703.       bbl.of space.word * 
  2704.     }
  2705.   if$
  2706. %<*!ay>
  2707.   editor empty$
  2708.   editor field.or.null author field.or.null =
  2709.     { key empty$
  2710.         { series empty$
  2711.             { "need editor, key, or series for " cite$ * " to crossref " *
  2712.               crossref * warning$
  2713.               "" *
  2714.             }
  2715.             { series emphasize * }
  2716.           if$
  2717.         }
  2718.         { key * }
  2719.       if$
  2720.     }
  2721.     { format.crossref.editor * }
  2722.   if$
  2723. %</!ay>
  2724.   " \cite{" * crossref * "}" *
  2725. %    \end{macrocode}
  2726. % \end{macro}
  2727. % \begin{macro}{`format.incoll.inproc.crossref'}
  2728. %\changes{2.1}{1994 Jul 1}{Emphasize \texttt{booktitle} with 
  2729. %     \texttt{emphasize},  not explicitly}
  2730. % The \texttt{booktitle} field was emphasized emplicitly, but it should be
  2731. % done by command.
  2732. %    \begin{macrocode}
  2733. FUNCTION {format.incoll.inproc.crossref}
  2734. %<*!ay>
  2735.   editor empty$
  2736.   editor field.or.null author field.or.null =
  2737.     { key empty$
  2738.         { booktitle empty$
  2739.             { "need editor, key, or booktitle for " cite$ * " to crossref " *
  2740.               crossref * warning$
  2741.               ""
  2742.             }
  2743.             { word.in booktitle emphasize * }
  2744.           if$
  2745.         }
  2746.         { word.in key * " " *}
  2747.       if$
  2748.     }
  2749.     { word.in format.crossref.editor * " " *}
  2750.   if$
  2751. %</!ay>
  2752. %<ay>  word.in
  2753.   " \cite{" * crossref * "}" *
  2754. %    \end{macrocode}
  2755. % \end{macro}
  2756. % \changes{2.3b}{1995 Jan 18}{Add option \texttt{yrp-x} to suppress 
  2757. %    punctuation following date at beginning}
  2758. %    \begin{macrocode}
  2759. FUNCTION {article}
  2760. { output.bibitem
  2761.   format.authors "author" output.check
  2762. %<ay>  author format.key output
  2763. %<dt-beg>  format.date "year" output.check
  2764. %<dt-beg&yrp-x>  add.blank
  2765. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2766. %<*!jtit-x>
  2767.   format.title "title" output.check
  2768. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  2769. %<!blk-com&!blk-tit>  new.block
  2770. %<blk-tit>  new.sentence
  2771. %</!jtit-x>
  2772.   crossref missing$
  2773.     { journal emphasize "journal" output.check
  2774. %<jnm-x>      add.blank
  2775.       format.vol.num.pages output
  2776. %<!dt-beg&!dt-end>      format.date "year" output.check
  2777.     }
  2778.     { format.article.crossref output.nonnull
  2779.       format.pages output
  2780.     }
  2781.   if$
  2782. %<!blk-com&!blk-tit>  new.block
  2783.   note output
  2784. %<*!dt-beg&dt-end>
  2785. %<!blk-com&!blk-tit>  new.block 
  2786.   format.date "year" output.check
  2787. %</!dt-beg&dt-end>
  2788.   fin.entry
  2789. %<harnm>  write.url
  2790. %    \end{macrocode}
  2791. %\changes{2.0a}{1994 Aug 30}{Fix up \texttt{new.sentence} so not added with
  2792. %        \texttt{blk-com}}
  2793. %    \begin{macrocode}
  2794. FUNCTION {book}
  2795. { output.bibitem
  2796.   author empty$
  2797.     { format.editors "author and editor" output.check
  2798. %<ay>      editor format.key output
  2799.     }
  2800.     { format.authors output.nonnull
  2801.       crossref missing$
  2802.         { "author and editor" editor either.or.check }
  2803.         'skip$
  2804.       if$
  2805.     }
  2806.   if$
  2807. %<dt-beg>  format.date "year" output.check
  2808. %<dt-beg&yrp-x>  add.blank
  2809. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2810.   format.btitle "title" output.check
  2811.   crossref missing$
  2812.     { format.bvolume output
  2813. %<!blk-com&!blk-tit>      new.block
  2814. %<blk-tit>  new.sentence
  2815.       format.number.series output
  2816. %<!blk-com&!blk-tit>      new.sentence
  2817.       publisher "publisher" output.check
  2818.       address output
  2819.     }
  2820.     {
  2821. %<!blk-com&!blk-tit>      new.block
  2822. %<blk-tit>  new.sentence
  2823.       format.book.crossref output.nonnull
  2824.     }
  2825.   if$
  2826.   format.edition output
  2827. %<!dt-beg&!dt-end>  format.date "year" output.check
  2828. %<!blk-com&!blk-tit>  new.block
  2829.   note output
  2830. %<*!dt-beg&dt-end>
  2831. %<!blk-com&!blk-tit>  new.block 
  2832.   format.date "year" output.check
  2833. %</!dt-beg&dt-end>
  2834.   fin.entry
  2835. %<harnm>  write.url
  2836. FUNCTION {booklet}
  2837. { output.bibitem
  2838.   format.authors output
  2839. %<ay>  author format.key output
  2840. %<ay&dt-beg>  format.date "year" output.check
  2841. %<!ay&dt-beg>  format.date output
  2842. %<dt-beg&yrp-x>  add.blank
  2843. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2844.   format.title "title" output.check
  2845. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  2846. %<!blk-com&!blk-tit>  new.block
  2847. %<blk-tit>  new.sentence
  2848.   howpublished output
  2849.   address output
  2850. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  2851. %<!ay&!dt-beg&!dt-end>  format.date output
  2852. %<!blk-com&!blk-tit>  new.block
  2853.   note output
  2854. %<*ay&!dt-beg&dt-end>
  2855. %<!blk-com&!blk-tit>  new.block 
  2856.   format.date "year" output.check
  2857. %</ay&!dt-beg&dt-end>
  2858. %<*!ay&!dt-beg&dt-end>
  2859. %<!blk-com&!blk-tit>  new.block 
  2860.   format.date output
  2861. %</!ay&!dt-beg&dt-end>
  2862.   fin.entry
  2863. %<harnm>  write.url
  2864. FUNCTION {inbook}
  2865. { output.bibitem
  2866.   author empty$
  2867.     { format.editors "author and editor" output.check
  2868. %<ay>      editor format.key output
  2869.     }
  2870.     { format.authors output.nonnull
  2871.       crossref missing$
  2872.         { "author and editor" editor either.or.check }
  2873.         'skip$
  2874.       if$
  2875.     }
  2876.   if$
  2877. %<dt-beg>  format.date "year" output.check
  2878. %<dt-beg&yrp-x>  add.blank
  2879. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2880.   format.btitle "title" output.check
  2881.   crossref missing$
  2882.     { format.bvolume output
  2883.       format.chapter.pages "chapter and pages" output.check
  2884. %<!blk-com&!blk-tit>      new.block
  2885. %<blk-tit>  new.sentence
  2886.       format.number.series output
  2887. %<!blk-com&!blk-tit>      new.sentence
  2888.       publisher "publisher" output.check
  2889.       address output
  2890.     }
  2891.     { format.chapter.pages "chapter and pages" output.check
  2892. %<!blk-com&!blk-tit>      new.block
  2893. %<blk-tit>  new.sentence
  2894.       format.book.crossref output.nonnull
  2895.     }
  2896.   if$
  2897.   format.edition output
  2898. %<!dt-beg&!dt-end>  format.date "year" output.check
  2899. %<!blk-com&!blk-tit>  new.block
  2900.   note output
  2901. %<*!dt-beg&dt-end>
  2902. %<!blk-com&!blk-tit>  new.block 
  2903.   format.date "year" output.check
  2904. %</!dt-beg&dt-end>
  2905.   fin.entry
  2906. %<harnm>  write.url
  2907. FUNCTION {incollection}
  2908. { output.bibitem
  2909.   format.authors "author" output.check
  2910. %<ay>  author format.key output
  2911. %<dt-beg>  format.date "year" output.check
  2912. %<dt-beg&yrp-x>  add.blank
  2913. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2914. %<*!jtit-x>
  2915.   format.title "title" output.check
  2916. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  2917. %<!blk-com&!blk-tit>  new.block
  2918. %<blk-tit|(blk-com&in-blk)>  new.sentence
  2919. %</!jtit-x>
  2920.   crossref missing$
  2921.     { format.in.ed.booktitle "booktitle" output.check
  2922.       format.bvolume output
  2923.       format.number.series output
  2924.       format.chapter.pages output
  2925. %<!blk-com&!blk-tit>      new.sentence
  2926.       publisher "publisher" output.check
  2927.       address output
  2928.       format.edition output
  2929. %<!dt-beg&!dt-end>      format.date "year" output.check
  2930.     }
  2931.     { format.incoll.inproc.crossref output.nonnull
  2932.       format.chapter.pages output
  2933.     }
  2934.   if$
  2935. %<!blk-com&!blk-tit>  new.block
  2936.   note output
  2937. %<*!dt-beg&dt-end>
  2938. %<!blk-com&!blk-tit>  new.block 
  2939.   format.date "year" output.check
  2940. %</!dt-beg&dt-end>
  2941.   fin.entry
  2942. %<harnm>  write.url
  2943. FUNCTION {inproceedings}
  2944. { output.bibitem
  2945.   format.authors "author" output.check
  2946. %<ay>  author format.key output
  2947. %<dt-beg>  format.date "year" output.check
  2948. %<dt-beg&yrp-x>  add.blank
  2949. %<!blk-com&!blk-tit&!yrp-x>  new.block
  2950. %<*!jtit-x>
  2951.   format.title "title" output.check
  2952. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  2953. %<!blk-com&!blk-tit>  new.block
  2954. %<blk-tit|(blk-com&in-blk)>  new.sentence
  2955. %</!jtit-x>
  2956.   crossref missing$
  2957.     { format.in.ed.booktitle "booktitle" output.check
  2958.       format.bvolume output
  2959.       format.number.series output
  2960.       format.pages output
  2961. %<*!ay>
  2962.       address empty$
  2963.         { organization publisher new.sentence.checkb
  2964.           organization output
  2965.           publisher output
  2966.           format.date "year" output.check
  2967.         }
  2968.         { address output.nonnull
  2969. %<!dt-beg&!dt-end>          format.date "year" output.check
  2970. %<!blk-com&!blk-tit>          new.sentence
  2971.           organization output
  2972.           publisher output
  2973.         }
  2974.       if$
  2975. %</!ay>
  2976. %<*ay>
  2977.       address output
  2978. %<!blk-com&!blk-tit>      new.sentence
  2979.       organization output
  2980.       publisher output
  2981. %<!dt-beg&!dt-end>  format.date "year" output.check
  2982. %</ay>
  2983.     }
  2984.     { format.incoll.inproc.crossref output.nonnull
  2985.       format.pages output
  2986.     }
  2987.   if$
  2988. %<!blk-com&!blk-tit>  new.block
  2989.   note output
  2990. %<*!dt-beg&dt-end>
  2991. %<!blk-com&!blk-tit>  new.block 
  2992.   format.date "year" output.check
  2993. %</!dt-beg&dt-end>
  2994.   fin.entry
  2995. %<harnm>  write.url
  2996. FUNCTION {conference} { inproceedings }
  2997. %<*ay>
  2998. FUNCTION {manual}
  2999. { output.bibitem
  3000.   format.authors output
  3001.   author format.key output
  3002. %<dt-beg>  format.date "year" output.check
  3003. %<dt-beg&yrp-x>  add.blank
  3004. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3005.   format.btitle "title" output.check
  3006. %<blk-tit>  new.sentence
  3007. %<!blk-com&!blk-tit>  organization address new.block.checkb
  3008.   organization output
  3009.   address output
  3010.   format.edition output
  3011. %<!dt-beg&!dt-end>  format.date "year" output.check
  3012. %<!blk-com&!blk-tit>  new.block
  3013.   note output
  3014. %<*!dt-beg&dt-end>
  3015. %<!blk-com&!blk-tit>  new.block 
  3016.   format.date "year" output.check
  3017. %</!dt-beg&dt-end>
  3018.   fin.entry
  3019. %<harnm>  write.url
  3020. %</ay>
  3021. %<*!ay>
  3022. FUNCTION {manual}
  3023. { output.bibitem
  3024.   author empty$
  3025.     { organization empty$
  3026.         'skip$
  3027.         { organization output.nonnull
  3028.           address output
  3029.         }
  3030.       if$
  3031.     }
  3032.     { format.authors output.nonnull }
  3033.   if$
  3034. %<ay&dt-beg>  format.date "year" output.check
  3035. %<!ay&dt-beg>  format.date output
  3036. %<dt-beg&yrp-x>  add.blank
  3037. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3038.   format.btitle "title" output.check
  3039. %<blk-tit>  new.sentence
  3040.   author empty$
  3041.     { organization empty$
  3042.     {
  3043. %<!blk-com&!blk-tit>          address new.block.checka
  3044.           address output
  3045.         }
  3046.         'skip$
  3047.       if$
  3048.     }
  3049.     {
  3050. %<!blk-com&!blk-tit>      organization address new.block.checkb
  3051.       organization output
  3052.       address output
  3053.     }
  3054.   if$
  3055.   format.edition output
  3056. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  3057. %<!ay&!dt-beg&!dt-end>  format.date output
  3058. %<!blk-com&!blk-tit>  new.block
  3059.   note output
  3060. %<*ay&!dt-beg&dt-end>
  3061. %<!blk-com&!blk-tit>  new.block 
  3062.   format.date "year" output.check
  3063. %</ay&!dt-beg&dt-end>
  3064. %<*!ay&!dt-beg&dt-end>
  3065. %<!blk-com&!blk-tit>  new.block 
  3066.   format.date output
  3067. %</!ay&!dt-beg&dt-end>
  3068.   fin.entry
  3069. %<harnm>  write.url
  3070. %</!ay>
  3071. %    \end{macrocode}
  3072. % \begin{macro}{`masterthesis'}
  3073. % \changes{2.0}{1994 Feb 7}{Add \texttt{thtit-a} to format thesis titles like
  3074. %         articles instead of books.}
  3075. % To format a master's thesis.
  3076. %    \begin{macrocode}
  3077. FUNCTION {mastersthesis}
  3078. { output.bibitem
  3079.   format.authors "author" output.check
  3080. %<ay>  author format.key output
  3081. %<dt-beg>  format.date "year" output.check
  3082. %<dt-beg&yrp-x>  add.blank
  3083. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3084. %<!thtit-a>  format.btitle "title" output.check
  3085. %<thtit-a>  format.title "title" output.check
  3086. %<thtit-a&blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3087. %<!blk-com&!blk-tit>  new.block
  3088. %<blk-tit>  new.sentence
  3089.   bbl.mthesis format.thesis.type output.nonnull
  3090.   school "school" output.check
  3091.   address output
  3092. %<!dt-beg&!dt-end>  format.date "year" output.check
  3093. %<!blk-com&!blk-tit>  new.block
  3094.   note output
  3095. %<*!dt-beg&dt-end>
  3096. %<!blk-com&!blk-tit>  new.block 
  3097.   format.date "year" output.check
  3098. %</!dt-beg&dt-end>
  3099.   fin.entry
  3100. %<harnm>  write.url
  3101. %    \end{macrocode}
  3102. % \end{macro}
  3103. %    \begin{macrocode}
  3104. FUNCTION {misc}
  3105. { output.bibitem
  3106.   format.authors output
  3107. %<ay>  author format.key output
  3108. %<ay&dt-beg>  format.date "year" output.check
  3109. %<!ay&dt-beg>  format.date output
  3110. %<*ay>
  3111. %<dt-beg&yrp-x>  add.blank
  3112. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3113.   format.title output
  3114. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3115. %<!blk-com&!blk-tit>  new.block
  3116. %<blk-tit>  new.sentence
  3117. %</ay>
  3118. %<*!ay>
  3119. %<!blk-com&!blk-tit>  title howpublished new.block.checkb
  3120.   format.title output
  3121. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3122. %<blk-tit>  new.sentence
  3123. %<!blk-com&!blk-tit>  howpublished new.block.checka
  3124. %</!ay>
  3125.   howpublished output
  3126. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  3127. %<!ay&!dt-beg&!dt-end>  format.date output
  3128. %<!blk-com&!blk-tit>  new.block
  3129.   note output
  3130. %<*ay&!dt-beg&dt-end>
  3131. %<!blk-com&!blk-tit>  new.block 
  3132.   format.date "year" output.check
  3133. %</ay&!dt-beg&dt-end>
  3134. %<*!ay&!dt-beg&dt-end>
  3135. %<!blk-com&!blk-tit>  new.block 
  3136.   format.date output
  3137. %</!ay&!dt-beg&dt-end>
  3138.   fin.entry
  3139. %<harnm>  write.url
  3140. %    \end{macrocode}
  3141. % \begin{macro}{`phdthesis'}
  3142. % \changes{2.0}{1994 Feb 7}{Add \texttt{thtit-a} to format thesis titles like
  3143. %         articles instead of books.}
  3144. % To format a doctoral thesis.
  3145. %    \begin{macrocode}
  3146. FUNCTION {phdthesis}
  3147. { output.bibitem
  3148.   format.authors "author" output.check
  3149. %<ay>  author format.key output
  3150. %<dt-beg>  format.date "year" output.check
  3151. %<dt-beg&yrp-x>  add.blank
  3152. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3153. %<!thtit-a>  format.btitle "title" output.check
  3154. %<thtit-a>  format.title "title" output.check
  3155. %<thtit-a&blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3156. %<!blk-com&!blk-tit>  new.block
  3157. %<blk-tit>  new.sentence
  3158.   bbl.phdthesis format.thesis.type output.nonnull
  3159.   school "school" output.check
  3160.   address output
  3161. %<!dt-beg&!dt-end>  format.date "year" output.check
  3162. %<!blk-com&!blk-tit>  new.block
  3163.   note output
  3164. %<*!dt-beg&dt-end>
  3165. %<!blk-com&!blk-tit>  new.block 
  3166.   format.date "year" output.check
  3167. %</!dt-beg&dt-end>
  3168.   fin.entry
  3169. %<harnm>  write.url
  3170. %    \end{macrocode}
  3171. % \end{macro}
  3172. %    \begin{macrocode}
  3173. %<*ay>
  3174. FUNCTION {proceedings}
  3175. { output.bibitem
  3176.   format.editors output
  3177.   editor format.key output
  3178. %<dt-beg>  format.date "year" output.check
  3179. %<dt-beg&yrp-x>  add.blank
  3180. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3181.   format.btitle "title" output.check
  3182.   format.bvolume output
  3183.   format.number.series output
  3184.   address output
  3185. %<!blk-com&!blk-tit>  new.sentence
  3186.   organization output
  3187.   publisher output
  3188. %<!dt-beg&!dt-end>  format.date "year" output.check
  3189. %<!blk-com&!blk-tit>  new.block
  3190.   note output
  3191. %<*!dt-beg&dt-end>
  3192. %<!blk-com&!blk-tit>  new.block 
  3193.   format.date "year" output.check
  3194. %</!dt-beg&dt-end>
  3195.   fin.entry
  3196. %<harnm>  write.url
  3197. %</ay>
  3198. %<*!ay>
  3199. FUNCTION {proceedings}
  3200. { output.bibitem
  3201.   editor empty$
  3202.     { organization output }
  3203.     { format.editors output.nonnull }
  3204.   if$
  3205. %<dt-beg>  format.date "year" output.check
  3206. %<dt-beg&yrp-x>  add.blank
  3207. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3208.   format.btitle "title" output.check
  3209.   format.bvolume output
  3210.   format.number.series output
  3211.   address empty$
  3212.     { editor empty$
  3213.         { publisher new.sentence.checka }
  3214.         { organization publisher new.sentence.checkb
  3215.           organization output
  3216.         }
  3217.       if$
  3218.       publisher output
  3219. %<!dt-beg&!dt-end>      format.date "year" output.check
  3220.     }
  3221.     { address output.nonnull
  3222. %<!dt-beg&!dt-end>      format.date "year" output.check
  3223. %<!blk-com&!blk-tit>      new.sentence
  3224.       editor empty$
  3225.         'skip$
  3226.         { organization output }
  3227.       if$
  3228.       publisher output
  3229.     }
  3230.   if$
  3231. %<!blk-com&!blk-tit>  new.block
  3232.   note output
  3233. %<*!dt-beg&dt-end>
  3234. %<!blk-com&!blk-tit>  new.block 
  3235.   format.date "year" output.check
  3236. %</!dt-beg&dt-end>
  3237.   fin.entry
  3238. %<harnm>  write.url
  3239. %</!ay>
  3240. FUNCTION {techreport}
  3241. { output.bibitem
  3242.   format.authors "author" output.check
  3243. %<ay>  author format.key output
  3244. %<dt-beg>  format.date "year" output.check
  3245. %<dt-beg&yrp-x>  add.blank
  3246. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3247.   format.title "title" output.check
  3248. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3249. %<!blk-com&!blk-tit>  new.block
  3250. %<blk-tit>  new.sentence
  3251.   format.tr.number output.nonnull
  3252.   institution "institution" output.check
  3253.   address output
  3254. %<!dt-beg&!dt-end>  format.date "year" output.check
  3255. %<!blk-com&!blk-tit>  new.block
  3256.   note output
  3257. %<*!dt-beg&dt-end>
  3258. %<!blk-com&!blk-tit>  new.block 
  3259.   format.date "year" output.check
  3260. %</!dt-beg&dt-end>
  3261.   fin.entry
  3262. %<harnm>  write.url
  3263. FUNCTION {unpublished}
  3264. { output.bibitem
  3265.   format.authors "author" output.check
  3266. %<ay>  author format.key output
  3267. %<ay&dt-beg>  format.date "year" output.check
  3268. %<!ay&dt-beg>  format.date output
  3269. %<dt-beg&yrp-x>  add.blank
  3270. %<!blk-com&!blk-tit&!yrp-x>  new.block
  3271.   format.title "title" output.check
  3272. %<blk-com&(tit-q|tit-qq)>  before.all 'output.state :=
  3273. %<!blk-com&!blk-tit>  new.block
  3274. %<blk-tit>  new.sentence
  3275.   note "note" output.check
  3276. %<*ay&!dt-beg&dt-end>
  3277. %<!blk-com&!blk-tit>  new.block 
  3278.   format.date "year" output.check
  3279. %</ay&!dt-beg&dt-end>
  3280. %<*!ay&!dt-beg&dt-end>
  3281. %<!blk-com&!blk-tit>  new.block 
  3282.   format.date output
  3283. %</!ay&!dt-beg&dt-end>
  3284.   fin.entry
  3285. %<harnm>  write.url
  3286. FUNCTION {default.type} { misc }
  3287. %    \end{macrocode}
  3288. % \begin{macro}{`jan'}
  3289. % \changes{2.0}{1994 Jan 31}{Make the translations of the months
  3290. %          dependent on the selected language.}
  3291. % Abbreviations for the months are provided for use within the database 
  3292. % \texttt{.bib} file. These are now made language dependent.
  3293. %^^A NEWLANGUAGE: take everything between %<*english> and %</english>
  3294. %^^A     copy it, change english to newlang, replace names of months
  3295. %    \begin{macrocode}
  3296. %<*english>
  3297. MACRO {jan} {"January"}
  3298. MACRO {feb} {"February"}
  3299. MACRO {mar} {"March"}
  3300. MACRO {apr} {"April"}
  3301. MACRO {may} {"May"}
  3302. MACRO {jun} {"June"}
  3303. MACRO {jul} {"July"}
  3304. MACRO {aug} {"August"}
  3305. MACRO {sep} {"September"}
  3306. MACRO {oct} {"October"}
  3307. MACRO {nov} {"November"}
  3308. MACRO {dec} {"December"}
  3309. %</english>
  3310. %<*babel>
  3311. MACRO {jan} {"\bbljan{}"}
  3312. MACRO {feb} {"\bblfeb{}"}
  3313. MACRO {mar} {"\bblmar{}"}
  3314. MACRO {apr} {"\bblapr{}"}
  3315. MACRO {may} {"\bblmay{}"}
  3316. MACRO {jun} {"\bbljun{}"}
  3317. MACRO {jul} {"\bbljul{}"}
  3318. MACRO {aug} {"\bblaug{}"}
  3319. MACRO {sep} {"\bblsep{}"}
  3320. MACRO {oct} {"\bbloct{}"}
  3321. MACRO {nov} {"\bblnov{}"}
  3322. MACRO {dec} {"\bbldec{}"}
  3323. %</babel>
  3324. %<*german>
  3325. MACRO {jan} {"Januar"}
  3326. MACRO {feb} {"Februar"}
  3327. MACRO {mar} {"M\qq{a}rz"}
  3328. MACRO {apr} {"April"}
  3329. MACRO {may} {"Mai"}
  3330. MACRO {jun} {"Juni"}
  3331. MACRO {jul} {"Juli"}
  3332. MACRO {aug} {"August"}
  3333. MACRO {sep} {"September"}
  3334. MACRO {oct} {"Oktober"}
  3335. MACRO {nov} {"November"}
  3336. MACRO {dec} {"Dezember"}
  3337. %</german>
  3338. %<*french>
  3339. MACRO {jan} {"janvier"}
  3340. MACRO {feb} {"f\'evrier"}
  3341. MACRO {mar} {"mars"}
  3342. MACRO {apr} {"avril"}
  3343. MACRO {may} {"mai"}
  3344. MACRO {jun} {"juin"}
  3345. MACRO {jul} {"juillet"}
  3346. MACRO {aug} {"ao\^ut"}
  3347. MACRO {sep} {"septembre"}
  3348. MACRO {oct} {"octobre"}
  3349. MACRO {nov} {"novembre"}
  3350. MACRO {dec} {"d\'ecembre"}
  3351. %</french>
  3352. %<*espo>
  3353. MACRO {jan} {"januaro"}
  3354. MACRO {feb} {"februaro"}
  3355. MACRO {mar} {"marto"}
  3356. MACRO {apr} {"aprilo"}
  3357. MACRO {may} {"majo"}
  3358. MACRO {jun} {"junio"}
  3359. MACRO {jul} {"julio"}
  3360. MACRO {aug} {"a\u{u}gusto"}
  3361. MACRO {sep} {"septembro"}
  3362. MACRO {oct} {"oktobro"}
  3363. MACRO {nov} {"novembro"}
  3364. MACRO {dec} {"decembro"}
  3365. %</espo>
  3366. %    \end{macrocode}
  3367. % \end{macro}
  3368. %    \begin{macrocode}
  3369. MACRO {acmcs} {"ACM Computing Surveys"}
  3370. MACRO {acta} {"Acta Informatica"}
  3371. MACRO {cacm} {"Communications of the ACM"}
  3372. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  3373. MACRO {ibmsj} {"IBM Systems Journal"}
  3374. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  3375. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  3376. MACRO {ieeetcad}
  3377.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  3378. MACRO {ipl} {"Information Processing Letters"}
  3379. MACRO {jacm} {"Journal of the ACM"}
  3380. MACRO {jcss} {"Journal of Computer and System Sciences"}
  3381. MACRO {scp} {"Science of Computer Programming"}
  3382. MACRO {sicomp} {"SIAM Journal on Computing"}
  3383. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  3384. MACRO {tods} {"ACM Transactions on Database Systems"}
  3385. MACRO {tog} {"ACM Transactions on Graphics"}
  3386. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  3387. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  3388. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  3389. MACRO {tcs} {"Theoretical Computer Science"}
  3390. %<*ay|!seq-no>
  3391. FUNCTION {sortify}
  3392. { purify$
  3393.   "l" change.case$
  3394. INTEGERS { len }
  3395. FUNCTION {chop.word}
  3396. { 's :=
  3397.   'len :=
  3398.   s #1 len substring$ =
  3399.     { s len #1 + global.max$ substring$ }
  3400.     's
  3401.   if$
  3402. %<*ay>
  3403. FUNCTION {format.lab.names}
  3404. { 's :=
  3405.   s #1 "{vv~}{ll}" format.name$
  3406.   s num.names$ duplicate$
  3407.   #2 >
  3408. %<!etal-it>    { pop$ " et~al." * }
  3409. %<etal-it>    { pop$ " " * "et~al." emphasize * }
  3410.     { #2 <
  3411.         'skip$
  3412.         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  3413. %<!etal-it>            { " et~al." * }
  3414. %<etal-it>            { " " * "et~al." emphasize * }
  3415. %<*!harnm>
  3416. %<!amper>            { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ * }
  3417. %<amper>            { " \& " * s #2 "{vv~}{ll}" format.name$ * }
  3418. %</!harnm>
  3419. %<harnm>            { " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
  3420.           if$
  3421.         }
  3422.       if$
  3423.     }
  3424.   if$
  3425. FUNCTION {author.key.label}
  3426. { author empty$
  3427.     { key empty$
  3428.         { cite$ #1 #3 substring$ }
  3429.         'key 
  3430.       if$
  3431.     }
  3432.     { author format.lab.names }
  3433.   if$
  3434. FUNCTION {author.editor.key.label}
  3435. { author empty$
  3436.     { editor empty$
  3437.         { key empty$
  3438.             { cite$ #1 #3 substring$ }
  3439.             'key  
  3440.           if$
  3441.         }
  3442.         { editor format.lab.names }
  3443.       if$
  3444.     }
  3445.     { author format.lab.names }
  3446.   if$
  3447. FUNCTION {editor.key.label}
  3448. { editor empty$
  3449.     { key empty$
  3450.         { cite$ #1 #3 substring$ }
  3451.         'key 
  3452.       if$
  3453.     }
  3454.     { editor format.lab.names }
  3455.   if$
  3456. %    \end{macrocode}
  3457. % \begin{macro}{`calc.label'}
  3458. % \changes{2.3a}{1994 Oct 11}{Add option \texttt{note-yr}}
  3459. %    \begin{macrocode}
  3460. FUNCTION {calc.label}
  3461. { type$ "book" =
  3462.   type$ "inbook" =
  3463.     'author.editor.key.label
  3464.     { type$ "proceedings" =
  3465.         'editor.key.label
  3466.         'author.key.label
  3467.       if$
  3468.     }
  3469.   if$
  3470. %<lab-it>  emphasize
  3471. %<!(har|ast|cay|alk|cn)>  "("
  3472. %<har|ast|cay|alk|cn>  ", "
  3473.   year duplicate$ empty$
  3474.      { pop$ "????" }
  3475. %<!note-yr>     { purify$ #-1 #4 substring$ }
  3476. %<note-yr>     'skip$
  3477.   if$
  3478.   'label :=
  3479. %    \end{macrocode}
  3480. % \end{macro}
  3481. %    \begin{macrocode}
  3482. %<*har|cay|ast|cn>
  3483. FUNCTION {calc.short.label}
  3484. { type$ "book" =
  3485.   type$ "inbook" =
  3486.     'author.editor.key.label
  3487.     { type$ "proceedings" =
  3488.         'editor.key.label
  3489.         'author.key.label
  3490.       if$
  3491.     }
  3492.   if$
  3493. %<lab-it>  emphasize
  3494.   'label :=
  3495. %</har|cay|ast|cn>
  3496. %</ay>
  3497. FUNCTION {sort.format.names}
  3498. { 's :=
  3499.   #1 'nameptr :=
  3500.   s num.names$ 'numnames :=
  3501.   numnames 'namesleft :=
  3502.     { namesleft #0 > }
  3503.     { nameptr #1 >
  3504.         { "   " * }
  3505.         'skip$
  3506.       if$ 
  3507.       s nameptr 
  3508. %<!nm-init&!nm-rev&!nm-rev1&!nm-rv>      "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" 
  3509. %<nm-init|nm-rev|nm-rev1|nm-rv>      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" 
  3510.       format.name$ 't := 
  3511.       nameptr numnames = t "others" = and
  3512.         { "et al" * }
  3513. %<*seq-lab>
  3514.         { numnames #2 > nameptr #2 = and
  3515.           { "zzzzzz" * #1 'namesleft := }
  3516.           { t sortify * }
  3517.         if$
  3518.         }
  3519. %</seq-lab>
  3520. %<!seq-lab>        { t sortify * }
  3521.       if$
  3522.       nameptr #1 + 'nameptr :=
  3523.       namesleft #1 - 'namesleft :=
  3524.     }
  3525.   while$
  3526. FUNCTION {sort.format.title}
  3527. { 't :=
  3528.   "A " #2
  3529.     "An " #3
  3530.       "The " #4 t chop.word
  3531.     chop.word
  3532.   chop.word
  3533.   sortify
  3534.   #1 global.max$ substring$
  3535. FUNCTION {author.sort}
  3536. { author empty$
  3537.     { key empty$
  3538.         { "to sort, need author or key in " cite$ * warning$
  3539.           ""
  3540.         }
  3541.         { key sortify }
  3542.       if$
  3543.     }
  3544.     { author sort.format.names }
  3545.   if$
  3546. FUNCTION {author.editor.sort}
  3547. { author empty$
  3548.     { editor empty$
  3549.         { key empty$
  3550.             { "to sort, need author, editor, or key in " cite$ * warning$
  3551.               ""
  3552.             }
  3553.             { key sortify }
  3554.           if$
  3555.         }
  3556.         { editor sort.format.names }
  3557.       if$
  3558.     }
  3559.     { author sort.format.names }
  3560.   if$
  3561. %<*ay>
  3562. FUNCTION {editor.sort}
  3563. { editor empty$
  3564.     { key empty$
  3565.         { "to sort, need editor or key in " cite$ * warning$
  3566.           ""
  3567.         }
  3568.         { key sortify }
  3569.       if$
  3570.     }
  3571.     { editor sort.format.names }
  3572.   if$
  3573. FUNCTION {presort}
  3574. { calc.label
  3575.   label sortify
  3576.   "    "
  3577.   type$ "book" =
  3578.   type$ "inbook" =
  3579.     'author.editor.sort
  3580.     { type$ "proceedings" =
  3581.         'editor.sort
  3582.         'author.sort
  3583.       if$
  3584.     }
  3585.   if$
  3586.   #1 entry.max$ substring$      
  3587.   'sort.label :=                
  3588.   sort.label                    
  3589.   "    "
  3590.   title field.or.null
  3591.   sort.format.title
  3592.   #1 entry.max$ substring$
  3593.   'sort.key$ :=
  3594. %</ay>
  3595. %</ay|!seq-no>
  3596. %<*!ay&!seq-no>
  3597. FUNCTION {author.organization.sort}
  3598. { author empty$
  3599.     { organization empty$
  3600.         { key empty$
  3601.             { "to sort, need author, organization, or key in " cite$ * warning$
  3602.               ""
  3603.             }
  3604.             { key sortify }
  3605.           if$
  3606.         }
  3607.         { "The " #4 organization chop.word sortify }
  3608.       if$
  3609.     }
  3610.     { author sort.format.names }
  3611.   if$
  3612. FUNCTION {editor.organization.sort}
  3613. { editor empty$
  3614.     { organization empty$
  3615.         { key empty$
  3616.             { "to sort, need editor, organization, or key in " cite$ * warning$
  3617.               ""
  3618.             }
  3619.             { key sortify }
  3620.           if$
  3621.         }
  3622.         { "The " #4 organization chop.word sortify }
  3623.       if$
  3624.     }
  3625.     { editor sort.format.names }
  3626.   if$
  3627. FUNCTION {presort}
  3628. { type$ "book" =
  3629.   type$ "inbook" =
  3630.     'author.editor.sort
  3631.     { type$ "proceedings" =
  3632.         'editor.organization.sort
  3633.         { type$ "manual" =
  3634.             'author.organization.sort
  3635.             'author.sort
  3636.           if$
  3637.         }
  3638.       if$
  3639.     }
  3640.   if$
  3641.   "    "
  3642.   year field.or.null sortify
  3643.   "    "
  3644.   title field.or.null
  3645.   sort.format.title
  3646.   #1 entry.max$ substring$
  3647.   'sort.key$ :=
  3648. %</!ay&!seq-no>
  3649. %<*(ay)|!seq-no>
  3650. ITERATE {presort}
  3651. SORT            
  3652. %</(ay)|!seq-no>
  3653. %<*ay>
  3654. STRINGS { last.label next.extra }       
  3655. INTEGERS { last.extra.num }             
  3656. FUNCTION {initialize.extra.label.stuff} 
  3657. { #0 int.to.chr$ 'last.label :=
  3658.   "" 'next.extra :=
  3659.   #0 'last.extra.num :=
  3660. FUNCTION {forward.pass}
  3661. { last.label label =
  3662.     { last.extra.num #1 + 'last.extra.num :=
  3663.       last.extra.num int.to.chr$ 'extra.label :=
  3664.     }
  3665.     { "a" chr.to.int$ 'last.extra.num :=
  3666.       "" 'extra.label :=
  3667.       label 'last.label :=
  3668.     }
  3669.   if$
  3670. FUNCTION {reverse.pass}
  3671. { next.extra "b" =
  3672.     { "a" 'extra.label := }
  3673.     'skip$
  3674.   if$
  3675.   extra.label 'next.extra :=
  3676. %<xlab-it>  extra.label emphasize 'extra.label :=
  3677. %<!(har|ast|cay|cn)>  label extra.label * 'label :=
  3678. EXECUTE {initialize.extra.label.stuff}
  3679. ITERATE {forward.pass}
  3680. REVERSE {reverse.pass}
  3681. FUNCTION {bib.sort.order}
  3682. { sort.label
  3683.   "    "
  3684.   year field.or.null sortify
  3685.   "    "
  3686.   title field.or.null
  3687.   sort.format.title
  3688.   #1 entry.max$ substring$
  3689.   'sort.key$ :=
  3690. %<har|cay|cn|ast>  calc.short.label
  3691. ITERATE {bib.sort.order}
  3692. SORT            
  3693. %</ay>
  3694. %<*!ay>
  3695. STRINGS { longest.label }
  3696. INTEGERS { number.label longest.label.width }
  3697. FUNCTION {initialize.longest.label}
  3698. { "" 'longest.label :=
  3699.   #1 'number.label :=
  3700.   #0 'longest.label.width :=
  3701. FUNCTION {longest.label.pass}
  3702. %<*!ay&!cite>
  3703. { number.label int.to.str$ 'label :=
  3704.   number.label #1 + 'number.label :=
  3705. %</!ay&!cite>
  3706. %<!ay&cite>{ cite$ 'label := 
  3707.   label width$ longest.label.width >
  3708.     { label 'longest.label :=
  3709.       label width$ 'longest.label.width :=
  3710.     }
  3711.     'skip$
  3712.   if$
  3713. EXECUTE {initialize.longest.label}
  3714. ITERATE {longest.label.pass}
  3715. %</!ay>
  3716. %    \end{macrocode}
  3717. %^^A NEWLANGUAGE: if newlang needs the " character in any translation
  3718. %^^A     (as German needs it) then use \qq instead and reproduce the 
  3719. %^^A     line below starting with %<german>, replaced with %<newlang>
  3720. % \begin{macro}{`begin.bib'}
  3721. % \changes{2.0}{1994 Jan 31}{For \texttt{german}, add the definition of 
  3722. %    {\tt\protect\bslash qq} to replace double-quote character.}
  3723. % \changes{2.0}{1994 Jan 31}{For \texttt{babel}, read in file 
  3724. % \texttt{babelbst.tex} in \texttt{thebibliography} to define the word 
  3725. %  commands.}
  3726. % The function \texttt{begin.bib} writes  the initial text to the \texttt{.bbl}
  3727. % file. The most important matter here is that the \texttt{thebibliography}
  3728. % environment is invoked. 
  3729. %    \begin{macrocode}
  3730. FUNCTION {begin.bib}
  3731. { preamble$ empty$                              
  3732.     'skip$
  3733.     { preamble$ write$ newline$ }
  3734.   if$
  3735. %<ay>  "\begin{thebibliography}{}" write$ newline$           
  3736. %<!ay>  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  3737. %<!tit-it&tit-q>  "\newcommand{\enquote}[1]{`#1'}"
  3738. %<!tit-it&!tit-q&tit-qq>  "\newcommand{\enquote}[1]{``#1''}"
  3739. %<!tit-it&(tit-q|tit-qq)>  write$ newline$
  3740. %<german>  "\let\qq=\" quote$ * write$ newline$
  3741. %<babel>  "\input{babelbst.tex}" write$ newline$
  3742. EXECUTE {begin.bib}
  3743. %    \end{macrocode}
  3744. % \end{macro}
  3745. %    \begin{macrocode}
  3746. EXECUTE {init.state.consts}
  3747. ITERATE {call.type$}
  3748. FUNCTION {end.bib}
  3749. { newline$
  3750.   "\end{thebibliography}" write$ newline$
  3751. EXECUTE {end.bib}
  3752. %</!options&!bblbst>
  3753. %    \end{macrocode}
  3754. % \section{The File \texttt{babelbst.tex} for English}
  3755. % The following contains the definitions for the \texttt{babel} language
  3756. % selection as they apply to English. This file may be extracted with 
  3757. % \dtx{} and the options \texttt{bblbst,english}.
  3758. %    \begin{macrocode}
  3759. %<*bblbst&english>
  3760.  % This is babelbst.tex for English.
  3761.  % It should serve as a model for other languages.
  3762.  % Alternatively, store it under a different name (e.g. englbst.tex)
  3763.  % and then \input it with a command in babelbst.tex.
  3764. \def\bbland{and}
  3765. \def\bbleditors{editors}        \def\bbleds{eds.}
  3766. \def\bbleditor{editor}          \def\bbled{ed.}
  3767. \def\bbledby{edited by}
  3768. \def\bbledition{edition}        \def\bbledn{edn.}
  3769. \def\bblVolume{Volume}          \def\bblVol{Vol.}
  3770. \def\bblvolume{volume}          \def\bblvol{vol.}
  3771. \def\bblof{of}
  3772. \def\bblNumber{Number}          \def\bblNo{No.}
  3773. \def\bblnumber{number}          \def\bblno{no.}
  3774. \def\bblin{in}                  \def\bblIn{In}
  3775. \def\bblpages{pages}            \def\bblpp{pp.}
  3776. \def\bblpage{page}              \def\bblp{p.}
  3777. \def\bblchapter{chapter}        \def\bblchap{chap.}
  3778. \def\bbltechreport{Technical Report}
  3779. \def\bbltechrep{Tech. Rep.}
  3780. \def\bblmthesis{Master's thesis}
  3781. \def\bblphdthesis{Ph.D. thesis}
  3782. \def\bblfirst{First}            \def\bblfirsto{1st}
  3783. \def\bblsecond{Second}          \def\bblsecondo{2nd}
  3784. \def\bblthird{Third}            \def\bblthirdo{3rd}
  3785. \def\bblfourth{Fourth}          \def\bblfourtho{4th}
  3786. \def\bblfifth{Fifth}            \def\bblfiftho{5th}
  3787. \def\bblst{st}  \def\bblnd{nd}  \def\bblrd{rd}
  3788. \def\bblth{th}
  3789. \def\bbljan{January}  \def\bblfeb{February}  \def\bblmar{March}
  3790. \def\bblapr{April}    \def\bblmay{May}       \def\bbljun{June}
  3791. \def\bbljul{July}     \def\bblaug{August}    \def\bblsep{September}
  3792. \def\bbloct{October}  \def\bblnov{November}  \def\bbldec{December}
  3793. %</bblbst&english>
  3794. %    \end{macrocode}
  3795. % \section{The File \texttt{babelbst.tex} for German}
  3796. % The following contains the definitions for the \texttt{babel} language
  3797. % selection as they apply to German. This file may be extracted with 
  3798. % \dtx{} and the options \texttt{bblbst,german}.
  3799. %    \begin{macrocode}
  3800. %<*bblbst&german>
  3801.  % This is babelbst.tex for German.
  3802.  % It should serve as a model for other languages.
  3803.  % Alternatively, store it under a different name (e.g. germbst.tex)
  3804.  % and then \input it with a command in babelbst.tex.
  3805. \def\bbland{und}
  3806. \def\bbleditors{Redakteure}     \def\bbleds{Red.}
  3807. \def\bbleditor{Redakteur}       \def\bbled{Red.}
  3808. \def\bbledby{herausgegeben von} 
  3809. \def\bbledition{Auflage}        \def\bbledn{Aufl.}
  3810. \def\bblVolume{Band}            \def\bblVol{Bd.}
  3811. \def\bblvolume{Band}            \def\bblvol{Bd.}
  3812. \def\bblof{von}
  3813. \def\bblNumber{Nummer}          \def\bblNo{No.}
  3814. \def\bblnumber{Nummer}          \def\bblno{No.}
  3815. \def\bblin{in}                  \def\bblIn{In}
  3816. \def\bblpages{Seiten}           \def\bblpp{S.}
  3817. \def\bblpage{Seite}             \def\bblp{S.}
  3818. \def\bblchapter{Kapitel}        \def\bblchap{Kap.}
  3819. \def\bbltechreport{Technischer Bericht}
  3820. \def\bbltechrep{Tech. Ber.}
  3821. \def\bblmthesis{Diplomarbeit}
  3822. \def\bblphdthesis{Doktorarbeit}
  3823. \def\bblfirst{Erste}            \def\bblfirsto{1.}
  3824. \def\bblsecond{Zweite}          \def\bblsecondo{2.}
  3825. \def\bblthird{Dritte}           \def\bblthirdo{3.}
  3826. \def\bblfourth{Vierte}          \def\bblfourtho{4.}
  3827. \def\bblfifth{F\"unfte}         \def\bblfiftho{5.}
  3828. \def\bblst{.}  \def\bblnd{.}  \def\bblrd{.}
  3829. \def\bblth{.}
  3830. \def\bbljan{Januar}  \def\bblfeb{Februar}  \def\bblmar{M\"arz}
  3831. \def\bblapr{April}   \def\bblmay{Mai}      \def\bbljun{Juni}
  3832. \def\bbljul{Juli}    \def\bblaug{August}   \def\bblsep{September}
  3833. \def\bbloct{Oktober} \def\bblnov{November} \def\bbldec{Dezember}
  3834. %</bblbst&german>
  3835. %    \end{macrocode}
  3836. % \section{The File \texttt{babelbst.tex} for French}
  3837. % The following contains the definitions for the \texttt{babel} language
  3838. % selection as they apply to French. This file may be extracted with 
  3839. % \dtx{} and the option \texttt{bblbst,french}.
  3840. %    \begin{macrocode}
  3841. %<*bblbst&french>
  3842.  % This is babelbst.tex for French.
  3843.  % It should serve as a model for other languages.
  3844.  % Alternatively, store it under a different name (e.g. frnchbst.tex)
  3845.  % and then \input it with a command in babelbst.tex.
  3846. \def\bbland{et}
  3847. \def\bbleditors{r\'edacteurs}   \def\bbleds{r\'eds.}
  3848. \def\bbleditor{r\'edacteur}     \def\bbled{r\'ed.}
  3849. \def\bbledby{edit\'e par}
  3850. \def\bbledition{\'edition}      \def\bbledn{\'edn.}
  3851. \def\bblVolume{Tome}            \def\bblVol{Tm.}
  3852. \def\bblvolume{tome}            \def\bblvol{tm.}
  3853. \def\bblof{de}
  3854. \def\bblNumber{Num\'ero}        \def\bblNo{No.}
  3855. \def\bblnumber{num\'ero}        \def\bblno{no.}
  3856. \def\bblin{dans}                \def\bblIn{Dans}
  3857. \def\bblpages{pages}            \def\bblpage{pp.}
  3858. \def\bblpage{page}              \def\bblp{p.}
  3859. \def\bblchapter{chapitre}       \def\bblchap{chap.}
  3860. \def\bbltechrep{Rapport technique}
  3861. \def\bbltechrep{Rap. tech.}
  3862. \def\bblmthesis{Th\`ese de ma\^itre}
  3863. \def\bblphdthesis{Th\`ese de doctorat}
  3864. \def\bblfirst{Premi\`ere}   \def\bblfirsto{1$^{\mbox{\scriptsize re}}$}
  3865. \def\bblsecond{Deuxi\`eme}  \def\bblsecondo{2\bblth}
  3866. \def\bblthird{Troisi\`eme}  \def\bblthirdo{3\bblth}
  3867. \def\bblfourth{Quatri\`eme} \def\bblfourtho{4\bblth}
  3868. \def\bblfifth{Cinqui\`eme}  \def\bblfiftho{5\bblth}
  3869. \def\bblst{\bblth} \def\bblnd{\bblth} \def\bblrd{\bblth}
  3870. \def\bblth{$^{\mbox{\scriptsize e}}$}
  3871. \def\bbljan{janvier} \def\bblfeb{f\'evrier}  \def\bblmar{mars}
  3872. \def\bblapr{avril}   \def\bblmay{mai}        \def\bbljun{juin}
  3873. \def\bbljul{juillet} \def\bblaug{ao\^ut}     \def\bblsep{septembre}
  3874. \def\bbloct{octobre} \def\bblnov{novembre}   \def\bbldec{d\'ecembre}
  3875. %</bblbst&french>
  3876. %    \end{macrocode}
  3877. % \Finale
  3878.